문제

고대 미스테리로 전해지는 여우의 울음소리를 밝혀내기 위해 한신이는 고성능 녹음기로 무장하고 숲으로 들어갔다. 하지만 숲에는 동물들이 가득해, 녹음된 음성에는 다른 동물들의 울음소리가 섞여 있다. 그러나 한신이는 철저한 준비를 해 왔기 때문에 다른 동물들이 어떤 울음소리를 내는지 정확히 알고 있다. 그러므로 그 소리를 모두 걸러내면 남은 잡음은 분명히 여우의 울음소리일 것이다.

 

 

입력

첫 번째 줄에는 테스트케이스의 개수 T가 입력된다. 각 테스트케이스는 아래와 같이 구성되어 있다.

테스트케이스의 첫 줄에는 몇 개의 단어로 이루어진 녹음된 소리가 입력된다. 단어는 알파벳 소문자로만 이루어져 있으며 공백으로 구분된다. 단어의 길이는 최대 100글자이고, 단어의 개수는 최대 100개이다. 다음 줄부터는 여우를 제외한 동물들의 울음소리가 <동물> goes <소리>의 형태로 입력된다. 최소 1마리, 최대 100마리이며, 이름은 최대 100글자이고 실제로 존재하는 동물의 이름이다. 여우를 제외한 동물의 울음소리는 한 단어이고 최대 100글자이다.

마지막 줄에는 한신이가 알고 싶어하는 질문이 주어진다. what does the fox say?

 

 

출력

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

 

 

예제

 

 

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
 
public class Main_BJ_9536_여우는어떻게울지 {
 
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        StringTokenizer st;
        
        ArrayList<String> list = new ArrayList<>();
        
        int T = Integer.parseInt(br.readLine());
        
        for(int i=0;i<T;i++) {
            
            st = new StringTokenizer(br.readLine()," ");
            while(st.hasMoreTokens()) list.add(st.nextToken());
            
            while(true) {
                st = new StringTokenizer(br.readLine()," ");
                st.nextToken(); st.nextToken();
                
                String sound = st.nextToken();
                
                if(sound.equals("the")) {
                    st.nextToken(); st.nextToken();
                    break;
                }
                
                for(int j=0;j<list.size();j++) {
                    if(list.get(j).equals(sound)) {
                        list.remove(j); j--;
                    }
                }
            }
            
            for(int j=0;j<list.size();j++) sb.append(list.get(j)+" ");
            System.out.println(sb.toString());
            sb.setLength(0);
            list.clear();
        }
    }
 
}
 
cs

 

 

풀이 방법

여우의 울음소리를 한 줄씩, 녹음된 순서대로 출력하는 문제였습니다. 여우를 제외한 동물들의 울음소리가 <동물> goes <소리>의 형태로 입력되기 때문에 띄어쓰기를 기준으로 단어를 나누었을 때, 세 번째 단어가 the가 아닐 경우에는 list에 넣어둔 울음소리 중 동일한 동물의 소리를 list에서 제거해주었습니다. 만약 세 번째 단어가 the일 경우에는 while문을 빠져나와 남은 울음소리를 차례대로 출력해주었습니다.

'문제 > 백준' 카테고리의 다른 글

백준 1062번 가르침 [JAVA]  (0) 2021.04.12
백준 2146번 다리 만들기 [JAVA]  (0) 2021.04.12
백준 17836번 공주님을 구해라! [JAVA]  (0) 2021.04.01
백준 9465번 스티커 [JAVA]  (0) 2021.03.29
백준 11048번 이동하기 [JAVA]  (0) 2021.03.29

+ Recent posts