https://www.acmicpc.net/problem/5211
난이도 : 브론즈1
태그 : 구현, 문자열
설명
음악을 배경으로 한 코딩테스트 문제입니다.
"|" 문자를 기준으로 문자열을 분리하고, 분리된 각 문자열의 맨 앞글자를 이용해
가장조와 다장조를 각각 카운팅하면 됩니다.
만약 가단조와 다장조 개수가 같을 경우,
문자열의 맨 끝 문자를 비교하여 판단합니다.
소스코드
line = input().strip().split("|")
ade_minor = ['A', 'D', 'E']
cfg_major = ['C', 'F', 'G']
ade_minor_cnt = 0
cfg_major_cnt = 0
# 음조는 가장조와 다장조 두 가지만 입력으로 주어지는 것이 아니므로 if - else 로 하면 안됨
for i in line:
if i[0] in ade_minor:
ade_minor_cnt += 1
if i[0] in cfg_major:
cfg_major_cnt += 1
# 가단조 ade -> minor
# 다장조 cfg -> major
if ade_minor_cnt == cfg_major_cnt:
if line[-1][-1] in cfg_major:
cfg_major_cnt += 1
if line[-1][-1] in ade_minor:
ade_minor_cnt += 1
if ade_minor_cnt < cfg_major_cnt:
print("C-major")
else:
print("A-minor")
후기
입력으로 가단조와 다장조 두가지만 주어지는 줄 알고 if - else를 통해 풀었는데,
수많은 '틀렸습니다'를 받고, 뭔가 이상한데...? 하는 마음에
각각의 경우를 else를 없애고 각각 체크했더니 통과했던 문제였습니다
'코딩테스트 > Python' 카테고리의 다른 글
[백준 25373번] [Python] 벼락치기 (0) | 2022.11.18 |
---|---|
[백준 5566번] [Python] 주사위 게임 (0) | 2022.11.11 |
[백준 5426번] [Python] 비밀 편지 (1) | 2022.11.11 |
[백준 4998번] [Python] 저금 (0) | 2022.11.03 |
[백준 2810번] [Python] 컵홀더 (0) | 2022.11.03 |