๊ธฐ๋ก๋ฐฉ

BOJ_1384 : ๋ฉ”์‹œ์ง€ ๋ณธ๋ฌธ

CodingTest/Java

BOJ_1384 : ๋ฉ”์‹œ์ง€

Soom_1n 2022. 9. 23. 16:19

๐Ÿ‘‰ ๋ฌธ์ œ๋งํฌ

 

1384๋ฒˆ: ๋ฉ”์‹œ์ง€

๊ทธ๋ฃน ๋ฒˆํ˜ธ๋ฅผ "Group 1"๊ณผ ๊ฐ™์ด ์ถœ๋ ฅํ•จ์œผ๋กœ์จ ์ถœ๋ ฅ์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๋‹ค์Œ ์ค„๋ถ€ํ„ฐ ๋ˆ„๊ฐ€(A) ๋ˆ„๊ตฌ(B)์—๊ฒŒ ๋‚˜์œ ๋ง์„ ํ–ˆ๋Š”์ง€ "A was nasty about B"๋กœ ํ•œ ์ค„์”ฉ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๋‚˜์œ ๋ง์ด ์—ฌ๋Ÿฌ ๊ฐœ๋ผ๋ฉด, ์ž…๋ ฅ๋ฐ›์€ ์ˆœ

www.acmicpc.net



๐Ÿ”ธ ๋ฌธ์ œ ๋ถ„์„ ๐Ÿ”ธ

  • ์ธ์›์ˆ˜ n์ด ์ž…๋ ฅ๋œ๋‹ค.
  • ์™ผ์ชฝ์œผ๋กœ ๋„˜๊ธฐ๋Š” ๋กค๋งํŽ˜์ดํผ ํ›„ ๊ธ์ • ๋ฉ”์‹œ์ง€์™€ ๋ถ€์ • ๋ฉ”์‹œ์ง€ ๊ฒฐ๊ณผ๊ฐ€ ์ž…๋ ฅ๋œ๋‹ค.
  • ๊ทธ๋ฃน๋งˆ๋‹ค ๋ˆ„๊ฐ€ ๋ˆ„๊ตฌ์—๊ฒŒ ๋ถ€์ • ๋ฉ”์‹œ์ง€๋ฅผ ์ ์—ˆ๋Š”์ง€ ์ถœ๋ ฅํ•œ๋‹ค.
  • n์œผ๋กœ 0์ด ์ž…๋ ฅ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค.

๐Ÿ”ธ ์ฝ”๋“œ ๐Ÿ”ธ

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(st.nextToken());
        int count = 0;
        while (n > 0){
            String name[] = new String[n];
            ArrayList<Integer>[] nasty = new ArrayList[n];
            for (int i = 0; i < n; i++)
                nasty[i] = new ArrayList<Integer>();

            for (int i = 0; i < n; i++) {
                st = new StringTokenizer(br.readLine());
                name[i] = st.nextToken();
                for (int j = 1; j <= n-1; j++){
                    String write = st.nextToken();
                    if (write.compareTo("N") == 0){
                        nasty[i].add(((n+(i-j))%n));
                    }
                }
            }

            System.out.println("Group " + ++count);
            boolean flag = true;
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < nasty[i].size(); j++){
                    System.out.println(name[nasty[i].get(j)] + " was nasty about " + name[i]);
                    flag = false;
                }
            }
            if (flag)
                System.out.println("Nobody was nasty");

            st = new StringTokenizer(br.readLine());
            n = Integer.parseInt(st.nextToken());
            if (n>0)
                System.out.println("");
        }
    }
}

๐Ÿ”ธ ์ฝ”๋“œ ํ•ด์„ ๐Ÿ”ธ

  • n์ด 0์ด ์ž…๋ ฅ๋  ๋•Œ ๊นŒ์ง€ while๋ฌธ์œผ๋กœ ๋ฐ˜๋ณตํ•œ๋‹ค.
  • ๋กค๋งํŽ˜์ดํผ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ArrayList<Integer> ๋ฐฐ์—ด์„ ์„ ์–ธํ•œ๋‹ค. (2์ค‘ ๋ฐฐ์—ด)
    • i์—๊ฒŒ ๋ถ€์ • ๋ฉ”์‹œ์ง€๋ฅผ ์ ์€ j๋ฅผ nasty[i].add(j) ๋กœ ์ €์žฅํ•œ๋‹ค.
    • ์ข…์ด๋ฅผ ๋Œ๋ฆฌ๋Š” ๋ฐฉ์‹์—์„œ ์ธ๋ฑ์Šค๊ฐ€ ๋ฒ—์–ด๋‚˜๋Š” ๊ฒƒ ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด (n+(i-j)))%n์œผ๋กœ ๊ณ„์‚ฐํ•œ๋‹ค.
      • i-j๋กœ ์ธ๋ฑ์Šค ์ฐจ์ด๋ฅผ ๊ตฌํ•œ๋‹ค.
      • ์Œ์ˆ˜๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ n์—์„œ ๋นผ์ค€๋‹ค.
      • ์–‘์ˆ˜๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ n์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
  • ๊ทธ๋ฃน ์ค‘๊ฐ„์— ๊ณต๋ฐฑ์„ ๋„ฃ๋Š”๋‹ค.

๐Ÿ”ธ end ๐Ÿ”ธ

  • ๋ฉ”์‹œ์ง€ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ArrayLIst ๋ฐฐ์—ด์„ ์ฒ˜์Œ ์‚ฌ์šฉํ•ด๋ด์„œ ์ •๋ฆฌ ํฌ์ŠคํŒ…์„ ์ฐพ์•„๋ณด์•˜๋‹ค.
    • ์‚ฌ์šฉ ๋ฐฉ์‹์ด ์ƒ๊ฐ๋ณด๋‹ค ํŽธํ•œ ๊ฒƒ ๊ฐ™๋‹ค.
    • ์ดˆ๊ธฐํ™”๋ฅผ ํ•˜์ง€์•Š์•„์„œ ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ์—ˆ๋‹ค.
  • ์ถœ๋ ฅ ํ˜•์‹์„ ๊ทธ๋ƒฅ ๊ทธ๋ฃน๋งˆ๋‹ค ๊ณต๋ฐฑ๋งŒ ์žˆ์œผ๋ฉด ๋  ์ค„ ์•Œ์•˜๋Š”๋ฐ ์ •ํ™•ํžˆ ๋งž์ถฐ์•ผํ•ด์„œ ๋ช‡ ๋ฒˆ ํ‹€๋ ธ๋‹ค.

728x90