본문 바로가기

Algorithm/CodeUp

[CodeUp_Java] Q1513 : 지그재그 배열 3

반응형

안녕하세요! Plitche(플리체)입니다.
이번 포스팅의 주제는 Q1513 지그재그 배열 3 (자바, JAVA)입니다.

Intro

Question

문제 설명

입력

정수 n이 입력된다.( 1 <= n <= 99)

출력

n*n사각형에서 삼각형 모양으로 지그재그 출력한다.

예시

  • 입력 : 5
  • 출력 :
    0 0 0 0 5
    0 0 0 4 6
    0 0 3 7 12
    0 2 8 11 13
    1 9 10 14 15

Solution (풀이)

  • 풀이 : 메모리 11164, 시간 68
public class Answer {

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

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

        int count = 0;
        for (int i=0; i<n; i++) {
            count += i;
        }

        int a = n*n-count;
        int i = n-1;    // 첫 행의 index
        int j = 0;    // 첫 열의 index
        int many = 0;

        int no = 1;
        while (no<=a) {
            numbers[i][j] = no;

            if (many%2==0) {    // 정방향
                if (i==many) {
                    i++;
                    many++;
                } else {
                    i--;
                    j++;
                }                
            } else {    // 역방향
                if (i==n-1) {
                    j++;
                    many++;
                } else {
                    i++;
                    j--;
                }
            }

            no++;
        }

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

}

Ranking(순위)

반응형