본문 바로가기

Algorithm/CodeUp

[CodeUp_Java] Q1509 : 진격 후 결과

반응형

안녕하세요! Plitche(플리체)입니다.
이번 포스팅의 주제는 Q1509 진격 후 결과 (자바, JAVA)입니다.

Intro

Question

문제 설명

입력

10*10의 보드판의 정보가 입력된다.
11째줄에 각 말의 위치 여부가 입력된다.(1:있음, 0:없음)

출력

블럭 장애물에 부딪혀서 실패시 "세로줄 번호 crash",
구덩이에 떨어져서 실패시 "세로줄 번호 fall",
무사히 통과하면 "세로줄 번호 safe"를 출력한다.
(단, 말이 없는 줄은 아무결과도 출력하지 않는다.)

예시

  • 입력 :
    0 0 0 0 0 0 0 0 0 0
    0 2 0 0 0 0 0 0 0 0
    0 0 -1 0 0 0 0 0 2 0
    0 0 0 0 0 0 0 6 0 0
    0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 -4 2 0 0 0
    0 0 2 0 0 0 0 0 0 0
    0 0 0 0 3 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0
    1 1 0 0 1 1 0 1 0 1
  • 출력 :
    1 safe
    2 crash
    5 crash
    6 fall
    8 crash
    10 safe

Solution (풀이)

  • 풀이 : 메모리 11248, 시간 67
public class Answer1 {

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

        // 각 줄의 숫자 10개를 입력받을 배열 선언
        int[] numbers = new int[10];

        // 10*10 만큼 입력받을 예정임으로 10번만큼 돌린다.
        for (int i=0; i<10; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine(), " ");
            for (int j=0; j<10; j++) {
                // 통과가 아닐 경우
                int no = Integer.parseInt(st.nextToken());
                if (no != 0) {
                    if (no > 0) {
                        numbers[j] = 1;    // 충돌
                    } else if (no < 0) {
                        numbers[j] = -1; // 구멍
                    }
                }
            }
        }

        // 마지막 말들의 위치 입력
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        for (int i=0; i<10; i++) {
            int no = Integer.parseInt(st.nextToken());
            // 말이 있으면
            if (no == 1) {
                if (numbers[i] == 0) {    // 장애물이 없으면
                    sb.append(i+1).append(" ").append("safe");
                } else if (numbers[i] == 1) { // 충돌
                    sb.append(i+1).append(" ").append("crash");
                } else {
                    sb.append(i+1).append(" ").append("fall");
                }
                sb.append("\n");
            }
        }

        System.out.println(sb);
        br.close();
    }

}

Ranking(순위)

반응형