최대 1 분 소요

[백준 1384번] 메시지

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;
 
public class 백준_손수경_정답_1384 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int groupNum = 1;
 
        while (true) {
            int n = Integer.valueOf(br.readLine());
            String[] arr = new String[n];
            String[][] name = new String[n][n];
            int index = n - 1;
            if (n == 0) {
                break;
            }
            for (int i = 0; i < n; i++) {
                arr[i] = br.readLine();
            }
            for (int i = 0; i < n; i++) {
                name[i][0= arr[i].split(" ")[0];
                for (int j = 1; j < n; j++) {
                    name[i][j] = arr[index].split(" ")[0];
                    index--;
                    if (index < 0) {
                        index = n - 1;
                    }
                }
            }
            System.out.printf("Group %d\n", groupNum);
            boolean isAllP = true;
            groupNum++;
            for (int i = 0; i < n; i++) {
                for (int j = 1; j < n; j++) {
                    if (arr[i].split(" ")[j].equals("N")) {
                        System.out.printf("%s was nasty about %s\n", name[i][j], name[i][0]);
                        isAllP = false;
                    }
                }
            }
            if (isAllP == true) {
                System.out.println("Nobody was nasty");
            }
            System.out.println();
        }
    }
}
 
cs


풀이 과정

둥글게 앉아서 종이를 돌렸다는 점이 처음에 접근하기 어려웠다. 그래서 A라는 사람이 종이를 돌렸을 때, 적는 순서대로 name이라는 배열에 넣었다. 그래서 만약에 입력된 이름 순서가 A -> B -> C -> D -> E라면 name에는
A E D C B
B A E D C
C B A E D
D C B A E
E D C B A

로 들어가 있을 것이다. 여기서 둥글게 앉았기 때문에 이에 대한 인덱스 설정이 어려웠는데 1씩 줄여나가다가 인덱스 값이 음수가 되면 n - 1 로 설정하여서 name 배열에 넣었다. 그리고 입력된 P / N가 name배열 1~4인덱스와 비교를 하면 된다. 그리고 isAllP 변수를 통해서 모두 P를 적었을 경우 출력해야 되는 값을 출력해준다.

댓글남기기