• TOC {:toc}

이 글은 백준 온라인 저지의 1302번 문제를 파이썬(Python)으로 풀이한 것을 모아놓은 글입니다.

일종의 연습 기록이며 제가 정답을 받은 코드와 참고할만한 다른 코드를 같이 기록합니다. 필요한 경우 코드에 대한 해설을 기록합니다만 코드는 통과했어도 해설은 틀릴 수 있기 때문에 가볍게 참고해주시길 부탁드립니다. 피드백은 편하신 방법으로 자유롭게 주시면 감사하겠습니다.

2021.05.18

메모리 시간 코드 길이
28776 KB 68 ms 149 B
단계 시작 시각 끝난 시각 걸린 시간
문제 이해 22:31:23 22:32:11
풀이 생각 22:32:44 22:33:17
코딩 11:15:41 11:54:49
B = {}

for _ in range(int(input())):
    b = input()
    if b in B:
        B[b][0] -= 1
    else:
        B[b] = [-1, b]


print(min(B, key=B.get))

아이디어 & 풀이

리스트나 튜플은 min()이나 max()를 구할 때 첫 번쨰 원소부터 순서대로 비교한다.

  • 책 제목이 나온 수는 최댓값을, 책 제목은 최솟값을 구해야하므로 책 제목이 나온 수를 음수로 넣은 뒤 min()으로 정렬하면 원하는 결과를 얻을 수 있다.

참고 답안

# 풀이 1-1
N = int(input())
B = dict()
for _ in range(N):
    b = input()

    if b in B:
        B[b] += 1
    else:
        B[b] = 1

# 가장 많이 팔린 책의 개수를 m에 저장한다.
m = max(B.values())
M = []

# B의 key(t)와 value(c)에 대해서
for t, c in B.items():
    # c가 m과 같으면
    if c == m:
        # 해당 t를 M에 추가한다.
        M.append(t)

# M을 정렬한 뒤 첫 원소를 출력한다.
print(sorted(M)[0])

# 풀이 1-2
N = int(input())
B = dict()

for _ in range(N):
    book = input()
    if book in B:
        B[book] += 1
    else:
        B[book] = 1

# B.items(): B를 딕셔너리의 (key, value)로 구성된 리스트로 바꾼다.
# sorted(): 리스트를 책 제목 순으로 정렬한다.
B = sorted(B.items())
# 리스트를 책 제목이 많이 언급된 순서대로 정렬한 뒤
# 가장 첫 원소의 책 제목을 출력한다.
print(sorted(B, key=lambda x: x[1], reverse=True)[0][0])

# 풀이 1-3
B = {}

for _ in range(int(input())):
    b = input()

    if b in B.keys():
        B[b] += 1
    else:
        B[b] = 1

# max(B.values()): B의 값중 최댓값을 찾아
# [key for key in B.keys() if B[key] == ...]: 이 값을 value로 갖는 key들로 리스트를 구성한 뒤
# sorted(...): 정렬해
# 첫 번째 원소를 출력한다.
print(sorted([key for key in B.keys() if B[key] == max(B.values())])[0])