ALGORITHM/PYTHON

백준 BAEKJOON 5211번 가단조와 다장조 [PYTHON/파이썬]

칼코
반응형

 

 

 

 

 

백준 BAEKJOON 5211번 가단조와 다장조 [PYTHON/파이썬]


<문제 출처> (BRONZE Ⅰ)

https://www.acmicpc.net/problem/5211

 

5211번: 가단조와 다장조

첫째 줄에 음악이 주어진다. 음악은 {"A", "B", "C", "D", "E", "F", "G", "|"}로 이루어져 있으며, 길이는 5보다 크거나 같고, 100을 넘지 않는다. |가 연속해서 등장하거나, 문자열의 양쪽 끝에 나오는 경우

www.acmicpc.net

 

 

 

 

 

 

<풀이>

입력값을 split()을 사용하여 리스트로 변환 후

음악의 첫 음을 기준으로 가단조와 다장조의 개수를 세었다.

만약 개수가 같다면 맨 마지막 음악의 마지막 음을 기준으로

가단조와 다장조를 구별해 주면 된다.

 

 

 

 

 

<코드>

A_Minor = ["A", "D", "E"]
C_Major = ["C", "F", "G"]

scale = input().split("|")
A_Minor_cnt, C_Major_cnt = 0, 0

for s in scale:
    if s[0] in A_Minor:
        A_Minor_cnt += 1
    elif s[0] in C_Major:
        C_Major_cnt += 1

# 개수가 같다면 맨 마지막 음악의 마지막 음으로 구별
if A_Minor_cnt == C_Major_cnt:
    if scale[-1][-1] in A_Minor:
        A_Minor_cnt += 1
    elif scale[-1][-1] in C_Major:
        C_Major_cnt += 1

if A_Minor_cnt > C_Major_cnt:
    print("A-minor")
else:
    print("C-major")

 

 

 

 

 

 

 

반응형