반응형
문제
https://www.acmicpc.net/problem/1071
풀이
그리디 문제다
사전 순으로 가장 앞선 것을 출력하기 위해 배열이 오름차순으로 정렬되어야 한다
이를 위해 계수정렬을 통해 배열을 정렬한다
다음 규칙을 적용한다
a[i] 값에 대하여
1. a[i] + 1 값이 배열에 존재하면
1-1. a[i] + 2 이상의 값 k가 배열 안에 존재하면, a[i] 값을 전부 출력하고 k를 출력한다
1-2. a[i] + 2 이상의 값이 배열 안에 존재하지 않으면, a[i] + 1 값을 한번 출력한다
2. a[i] + 1 값의 배열에 존재하지 않는다면 a[i] 값을 전부 출력한다
코드
python
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
n = int(input())
nums = [int(x) for x in input().split()]
csort = [0 for i in range(1002)]
for i in range(n):
csort[nums[i]] += 1
answer = ""
while True:
is_empty_csort = True
for i in range(1001):
if csort[i]:
is_empty_csort = False
if csort[i + 1]:
k = -1
for j in range(i + 2, 1001):
if csort[j]:
k = j
break
if k != -1:
while csort[i]:
answer += str(i) + " "
csort[i] -= 1
answer += str(k) + " "
csort[k] -= 1
break
else:
answer += str(i + 1) + " "
csort[i + 1] -= 1
break
else:
while csort[i]:
answer += str(i) + " "
csort[i] -= 1
break
if is_empty_csort:
break
print(answer)
|
cs |
반응형
'BOJ > 미해결' 카테고리의 다른 글
BOJ 2477 - 참외밭 (0) | 2024.08.19 |
---|---|
BOJ 1489 - 대결 (0) | 2024.08.17 |
BOJ 11729 - 하노이 탑 이동 순서 (0) | 2024.08.15 |
BOJ 1083 - 소트 (0) | 2024.08.10 |
BOJ 1931 - 회의실 배정 (0) | 2024.08.09 |