alpyrithm_알파이리즘

[알고리즘][Python] 백준(BOJ) 9536 여우는 어떻게 울지?_파이썬 본문

Algorithm/백준 알고리즘_Python

[알고리즘][Python] 백준(BOJ) 9536 여우는 어떻게 울지?_파이썬

알파이 2020. 10. 9. 14:54

 

9536 여우는 어떻게 울지?    www.acmicpc.net/problem/9536

 

9536번: 여우는 어떻게 울지?

각 테스트케이스마다 여우의 울음소리를 한 줄씩, 녹음된 순서대로 출력한다. 여우의 울음소리가 녹음되어 있음이 보장된다. (알려진 것과는 달리, 여우는 모스 부호로 의사소통하지 않는다.)

www.acmicpc.net

 

 

 

문제 풀기 전 공부할 것 : 문자열

 

 

 

 

 

 

 

풀이 1

<내용>

  • 테스트케이스만큼 과정을 반복한다.
    • 여기서 잘못되면 33%에서 "틀렸습니다"가 뜬다.
  • 녹음된 울음소리를 recode에 리스트로 입력받는다.
  • 동물들의 울음소리만 sounds에 저장한다.
    • <동물> goes <소리>의 형태이므로 항상 길이가 3이다.
    • what does the fox say?는 길이가 3보다 크므로 길이가 3보다 클 때 while문을 빠져나온다.
  • 여우를 제외한 동물의 울음소리를 반복문을 이용하여 제거한다.
    • 녹음된 울음소리 중 다른 동물의 울음소리와 하나라도 같으면 new에 넣지 않고, 그렇지 않으면 넣는다.
  • new를 출력한다.

 

 

<코드>

import sys
input = sys.stdin.readline

t = int(input())
for _ in range(t):
    recode = list(input().rstrip().split())

    sounds = []
    while True:
        s = list(input().rstrip().split())
        if len(s) > 3:
            break
        sounds.append(s[2])
    
    new = []
    for i in recode:
        flag = True
        for s in sounds:
            if i == s:
                flag = False
                break
        if flag:
            new.append(i)
        
    print(*new)

 

 

 

 

 

 

 

 

 

 

 

풀이 2

<내용>

  • 위의 과정과 '여우를 제외한 동물의 울음소리를 반복문을 이용하여 제거한다.' 부분을 제외하고는 같다.
    • 동물의 울음소리를 반복문으로 돌면서 녹음된 울음소리 중 동물의 울음소리와 같으면 new에 넣지 않고, 그렇지 않으면 넣는다.
    • recode에 new를 저장한다.
  • new를 출력한다.

 

 

<코드>

import sys
input = sys.stdin.readline

t = int(input())
for _ in range(t):
    recode = list(input().rstrip().split())

    sounds = []
    while True:
        s = list(input().rstrip().split())
        if len(s) > 3:
            break
        sounds.append(s[2])
    
    for s in sounds:
        new = []
        for i in recode:
            if i != s:
                new.append(i)
        recode = new
        
    print(*new)

 

 

 

 

 

 

 

 

728x90
반응형
Comments