본문 바로가기

Algorithm/CodeUp

[CodeUp_Java] Q1510 : 홀수 마방진

반응형

안녕하세요! Plitche(플리체)입니다.
이번 포스팅의 주제는 Q1510 홀수 마방진 (자바, JAVA)입니다.

Intro

Question

문제 설명

입력

마방진의 크기인 n이 입력된다.(n은 50보다 작은 홀수인 자연수)

출력

위의 방법대로 크기가 n인 홀수 마방진을 출력한다.

예시

  • 입력 : 3
  • 출력 :
    8 1 6
    3 5 7
    4 9 2

Solution (풀이)

  • 풀이 : 메모리 11344, 시간 69
public class Answer {

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

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

        int i = 0;    // 시작 인덱스 i
        int j = length/2;    // 시작 인덱스 j
        int start = 0;    // 시작 숫자

        while (start++<length*length) {
            numbers[i][j] = start;

            if (start%length==0) {
                i++;
            } else {
                // 행 index를 순차적으로 줄여주되 첫 행이면 마지막 행으로
                if (i==0) {
                    i=length-1;    
                } else {
                    i--;    
                }

                // 열 index를 순차적으로 늘려주되 마지막 열이면 첫 행으로
                if (j==length-1) {
                    j=0;
                } else {
                    j++;    
                }                
            }
        }

        // for each문 활용
        for (int[] a : numbers) {
            for (int b : a) {
                sb.append(b).append(" ");
            }
            sb.append("\n");
        }

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

}

Ranking(순위)

반응형