반응형
문제
https://www.acmicpc.net/problem/30457
코드
n = int(input())
data = list(map(int, input().split()))
data.sort()
data1 = []
data2 = []
i = 0
while True:
if i == len(data):
break
data1.append(data[i])
i += 1
if i == len(data):
break
data2.append(data[i])
i += 1
answer = 0
if len(data1) == 1:
answer += 1
elif len(data1) > 1:
answer += 1
for i in range(1, len(data1)):
if data1[i - 1] < data1[i]:
answer += 1
if len(data2) == 1:
answer += 1
elif len(data2) > 1:
answer += 1
for i in range(1, len(data2)):
if data2[i - 1] < data2[i]:
answer += 1
if (len(data1) > 1 and data1[-1] == data1[-2] and data1[-1] > data2[-1]) or (len(data2) > 1 and data2[-1] == data2[-2] and data2[-1] > data1[-1]):
answer += 1
print(answer)
그리디 알고리즘 문제이다.
키 순서로 정렬한 다음,
키 작은 순서부터 앞, 뒤 나눠서 세우고, 카운트하면 된다.
반응형
'Programming > 알고리즘' 카테고리의 다른 글
[백준 / Python] 11003번 최솟값 찾기 (0) | 2023.12.29 |
---|---|
[백준 / Python] 17504번 제리와 톰 2 (0) | 2023.12.25 |
[백준 / Python] 17479번 정식당 (0) | 2023.12.09 |
[백준 / Python] 2740번 행렬 곱셈 (0) | 2023.11.09 |
[백준 / Python] 1213번 팬린드롬 만들기 (0) | 2023.10.19 |
댓글