https://www.acmicpc.net/problem/10814
풀이는 역시나 단순하다. 백준 저지에서 solved.ac 설정을 수정하면 문제별로 난이도가 표시되는데, 실버 수준의 문제들은 사실 그렇게 어렵게 느껴지지는 않는 것 같다. 문제는 시간 복잡도다. 문제에서 제한한 조건에 따라서 어떻게 풀지를 설계해야 하는데, 그 해석이 잘 안돼서 구현은 가능하지만 이 풀이가 문제가 요구하는 바에 부합하는지 판단을 내리는 게 조금 까다롭다.
해야지, 해야지 생각은 하는데 정말 조만간에 복잡도에 대해 공부 좀 해보자.
# PYTHON CODE (1)
1
2
3
4
5
6
7
8
9
10
11
12
|
import sys
n = int(sys.stdin.readline())
s = []
for i in range(n):
a, b = sys.stdin.readline().split()
s.append([int(a), str(b)])
s.sort(key=lambda x: x[0])
for i in s:
print(*i)
|
cs |
str인 숫자의 크기 비교는 조심해야할 필요가 있다.
1
2
|
print('9' <' 11') # return False
print('20' < '22') # return True
|
cs |
위와 같이 같은 자릿수에서는 문제가 되지 않지만, 가장 앞의 인덱스를 기준으로 크기 비교가 이루어지기 때문에 세심한 주의가 필요하다.
# PYTHON CODE (2)
1
2
3
4
5
6
7
8
9
10
|
import sys
N = int(input())
people = [[] for _ in range(201)]
for _ in range(N):
person = list(sys.stdin.readline().split())
people[int(person[0])].append(person[1])
for i in range(201):
for j in people[i]:
print(i, j)
|
cs |
이 풀이는 정렬이라기보다는, 리스트를 이용한 풀이인데 나름의 센스가 돋보이는 것 같아서 가져왔다. 백준 저지의 맞은 사람 풀이 중 꽤 빠른 속도를 자랑하는 풀이다.
한 가지 의외였던 점은, [None]일 때는 print를 진행하지만, []일때는 print를 해주지 않는다는 점.
output을 구미에 당기게 조절할 때 유용하지 않을까 싶다.
1
2
3
4
|
list1 = []
list2 = [None]
print(*list1) # return
print(*list2) # return None
|
cs |
'백준 > 정렬' 카테고리의 다른 글
[Python] 백준, 5052(정렬 알고리즘) (0) | 2021.08.28 |
---|---|
[Python] 백준, 1026(정렬) (0) | 2021.08.22 |
[Python] 백준, 1181(정렬) (0) | 2021.08.19 |
[Python] 백준, 1427(정렬) (0) | 2021.08.18 |
[Python] 백준, 2751(정렬) (0) | 2021.08.18 |