Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 직원 이직률
- 팀 분석
- 노코드AI
- 직원 이직여부
- 캐글
- 혼공학습단
- Brigthics
- Brightics Studio
- 삼성SDS Brightics
- 영상제작기
- 삼성SDS
- 삼성 SDS
- 데이터 분석
- 브라이틱스
- Brightics를 이용한 분석
- 포스코 아카데미
- 삼성SDS Brigthics
- 개인 의료비 예측
- 모델링
- Brigthics Studio
- 삼성 SDS Brigthics
- 포스코 청년
- 데이터분석
- Brightics
- Brigthics를 이용한 분석
- 추천시스템
- 혼공
- 혼공머신러닝딥러닝
- 브라이틱스 서포터즈
- 혼공머신
Archives
- Today
- Total
데이터사이언스 기록기📚
[백준/Python] 1744번(그리디, 정렬)_수 묶기 본문
📌문제 유형
그리디, 정렬, 많은 조건 분기 (골드4)
📌문제
📌나의 문제풀이
- 양수는 nums_pos, 0과 음수는 nums_min에 저장(절댓값 큰 순서대로 정렬)
- 음수의 경우, -와 -를 곱하면 양수이기 때문에 큰 수를 만들기 위해서는 절댓값이 큰 순서대로 정렬해야 함
- for문에서 2개씩 더한 값과 곱한 값 중에 뭐가 더 큰지 비교 후, 큰 값을 ans에 넣기
- 만약 홀수개라면, 마지막 수는 ans에 그냥 더하기
n = int(input())
nums_pos = []
nums_min = []
for _ in range(n):
num = int(input())
if num > 0:
nums_pos.append(num)
else:
nums_min.append(num)
nums_pos.sort(reverse = True)
nums_min.sort()
ans = 0
for i in range(1,len(nums_pos),2):
if nums_pos[i-1] + nums_pos[i] < nums_pos[i-1] * nums_pos[i]:
ans += (nums_pos[i-1] * nums_pos[i])
else:
ans += (nums_pos[i-1] + nums_pos[i])
if len(nums_pos) % 2 != 0:
ans += nums_pos[-1]
for j in range(1,len(nums_min),2):
if nums_min[j-1] + nums_min[j] < nums_min[j-1] * nums_min[j]:
ans += (nums_min[j-1] * nums_min[j])
else:
ans += (nums_min[j-1] + nums_min[j])
if len(nums_min) % 2 != 0:
ans += nums_min[-1]
print(ans)
📌 다른사람의 문제풀이
- 1은 더해주는 것이 크기 때문에 result에 미리 더하기
# n : 데이터의 크기
n = int(input())
# plus : 양수 데이터 리스트, minus : 음수 데이터 리스트
plus = []
minus = []
result = 0
for i in range(n):
num = int(input())
if num > 1:
plus.append(num)
elif num <= 0:
minus.append(num)
else:
result += num
# 정렬
plus.sort(reverse=True)
minus.sort() # ex) -3 -2 -1
# 양수 묶기
for i in range(0, len(plus), 2):
if i+1 >= len(plus):
result += plus[i]
else:
result += (plus[i] * plus[i+1])
# 음수 묶기
for i in range(0, len(minus), 2):
if i+1 >= len(minus):
result += minus[i]
else:
result += (minus[i] * minus[i+1])
print(result)
📌 리뷰
- 양수, 음수 나누어서 생각해보기
- 규칙 찾기
728x90
'Coding Test > 백준(Python)' 카테고리의 다른 글
[백준/Python] 1339번(그리디)_단어 수학 (0) | 2023.08.08 |
---|---|
[백준/Python] 2573번(DFS,BFS)_빙산 (0) | 2023.08.07 |
[백준/Python] 2668번(그래프, DFS)_숫자고르기 (0) | 2023.06.04 |
[백준/Python] 2589번(그래프, 브루트포스 ,BFS)_보물섬 (0) | 2023.05.29 |
[백준/Python] 2212번(그리디)_센서 (0) | 2023.05.29 |
Comments