문제 이해
입력
출력
문제 분석
"책 이름":팔린 개수
로 저장되도록 하기 위해 Dictionary 자료형 사용
d = dict()
or d = {}
로 dictionary 생성 book
이 d
에 있을 경우 d[book]
의 value += 1, 없을 경우 d[book] = 1
로 초기화d = dict()
for _ in range(int(input())):
book = input()
if book in d:
d[book] += 1
else:
d[book] = 1
d.values()
중 max값을 뽑기 위해 max()
함수 사용candidate
리스트 사용d.items()
사용을 통해 max value값을 저장하는 m
과 딕셔너리의 value인 v
값을 비교v == m
조건을 만족한다면 candidate
리스트에 append(k)
m = max(d.values()) # 가장 많이 팔린 책의 리스트
candidate = []
for k, v in d.items():
if v == m:
candidate.append(k)
candidate.sort()
print(candidate[0])
print(sorted(candidate)[0])
d = dict()
for _ in range(int(input())):
book = input()
if book in d:
d[book] += 1
else:
d[book] = 1
m = max(d.values()) # 가장 많이 팔린 책의 리스트
candidate = []
for k, v in d.items():
if v == m:
candidate.append(k)
# candidate.sort()
# print(candidate[0])
print(sorted(candidate)[0])
이 문제는 풀이 방법이 다 떠올랐음에도 틀린 문제이다.
이유는 문제에서 주어진 요구사항을 충분히 체크하지 못했기 때문이다.
본인이 짠 코드는 아래와 같다.
import sys
input = sys.stdin.readline
N = int(input())
dic = {}
for _ in range(N):
bookName = input()
if bookName in dic:
dic[bookName] += 1
else:
dic[bookName] = 1
print(max(dic, key=dic.get), end='')
고려하지 못한 부분은 바로 "가장 많이 팔린 책이 여러 개일 경우, 사전 순 가장 앞자리 제목의 책을 출력한다." 조건이다.
문제를 분석해놓은 주석 부분에도 본 내용이 없는 것을 보니 문제를 대충 읽었던 것 같다.
제출했음에도 계속 오류가 발생해 그 원인을 마지막 결과값 print()
문의 개행이 처리되는 부분에서 찾고 있었다.
그 과정에서 새로운 점을 찾기도 하였다.
print()
문은 원래 기본 값 설정이 출력 후 개행으로 설정되어있다는 점이다. → print(PRINT_CONTENT, end='\n')
따라서 개행없이 출력하고자 할 때는 end
속성의 값을 ''
으로 설정해주면 된다. → print(PRINT_CONTENT, end='')
느낀 점이라고 한다면 문제를 반드시 꼼꼼하게 읽자.이다.
어쩌면 로직을 생각하는 것보다 문제에 대한 꼼꼼한 분석이 코딩 테스트에서 제일 중요한 부분이라고 생각된다.
곧 회의가 있어서 마음이 급했나보다 .. 😂