9일차 - 전주 듣고 노래 맞히기 ( 백준 - 31562번 )

2025. 1. 23. 19:56코테 스터디(Python)

31562번 : 전주 듣고 노래 맞히기 


 

풀이

1. 아는 노래 N개와 맞출 노래 M개를 정수로 받아온다.

  N, M = map(int, input().split())

 

2. 노래를 받아 올 딕셔너리를 만든다.

  song = {}

 

3. 노래 제목 길이 T , 노래 제목 S , 처음 등장하는 일곱 개의 음이름을 a1, a2, a3, a4, a5, a6, a7에 N번 반복하여 받아온다.

  for _ in range(N):

  T, S, a1, a2, a3, a4, a5, a6, a7 = input().split()

 

4. 첫 세 음만 필요하기 때문에 a1, a2, a3만 A라는 리스트에 포함시킨다. song 딕셔너리안에 S(노래 제목)를 키를 가진 A(value)를 넣어준다.

  A = [a1, a2, a3]

  song[S] = A

 

5. M번 반복하여 맞출 노래 첫 세음을 B값에 받아온다.

 for _ in range(M):
 B = input().split()

 

6. 맞춘 노래를 세기 위해 count라는 변수와 일치하는 노래 제목을 넣기 위한 title 변수를 만들어 준다.

count = 0

title = ""

 

7. song을 반복하여 B와 같은 값이 있을 경우 count 증가해준다.

for i in song:
    if B == song[i]:
        count += 1
        title = i

 

8. 조건문을 통해 일치하는 노래가 2개 이상이면 "?" 를 출력하고 1개인 경우엔 노래제목을, 일치하는 게 없는 경우엔 "!" 를 출력한다.

 if count >= 2:
     print("?")
 elif count == 1:
     print(title)
 else:
     print("!")

 

제출코드

N, M = map(int, input().split())
song = {}

for _ in range(N):
    T, S, a1, a2, a3, a4, a5, a6, a7 = input().split()
    A = [a1, a2, a3]
    song[S] = A

for _ in range(M):
    B = input().split()
    count = 0
    title = ""

    for i in song:
        if B == song[i]:
            count += 1
            title = i

    if count >= 2:
        print("?")
    elif count == 1:
        print(title)
    else:
        print("!")