본문 바로가기

Algorithm/CodeUp

[CodeUp_Java] Q1514 : 레이저 체스

반응형

안녕하세요! Plitche(플리체)입니다.
이번 포스팅의 주제는 Q1514 레이저 체스 (자바, JAVA)입니다.

Intro

Question

문제 설명

입력

세 줄에 걸쳐 (행, 열)의 형태로 스플리터 위치가 입력된다.

출력

스플리터가 각 레이저를 분산했을때 레이저가 차지하는 부분을 1로 레이저가 차지하지 않는 부분을 0 스플리터를 2으로 하여 7∗7의 맵을 출력하라.

예시

  • 입력 :
    2 4
    4 4
    6 4
  • 출력 :
    0 0 0 1 0 0 0
    1 1 1 2 1 1 1
    0 0 0 1 0 0 0
    1 1 1 2 1 1 1
    0 0 0 1 0 0 0
    1 1 1 2 1 1 1
    0 0 0 1 0 0 0

Solution (풀이)

  • 풀이 : 메모리 11192, 시간 75
public class Answer1 {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        // 체스판의 크기 7*7 만큼 배열 선언
        int[][] numbers = new int[7][7];

        // 3개의 스플리터를 입력받기로 했음으로
        for (int i=0; i<3; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine(), " ");
            int row = Integer.parseInt(st.nextToken());
            int col = Integer.parseInt(st.nextToken());
            numbers[row-1][col-1] = 2;
        }

        for (int i=0; i<7; i++) {
            if (numbers[3][i]==2) {
                for (int j=0; j<7; j++) {
                    if (numbers[j][i]==2) {
                        for (int k=0; k<7; k++) {
                            if (numbers [j][k] == 2) {
                                for (int p=0; p<7; p++) {
                                    if (numbers[p][k] != 2) {
                                        numbers[p][k] = 1;        
                                    }
                                }
                            } else {
                                numbers[j][k] = 1;
                            }
                        }
                    } else {
                        numbers[j][i] = 1;
                    }
                }
            } else {
                numbers[3][i] = 1;    
            }

        }

        for (int[] i : numbers) {
            for (int j : i) {
                sb.append(j).append(" ");
            }
            sb.append("\n");
        }
        System.out.println(sb);
        br.close();
    }

}

Ranking(순위)

반응형