Algorithm/백준 알고리즘

백준_1913 달팽이(자바) / 구현

미스터로즈 2021. 11. 19. 09:57

시간&메모리 제한

 

문제

 

입력&출력

 

문제풀이

package com.Back;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Back_1913 {

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());
		int K = Integer.parseInt(br.readLine());
		int[][] arr = new int[N][N];

		int a = N / 2;
		int b = N / 2;
		int l = 1;
		int n = 1;

		while (true) {
			for (int i = 0; i < l; i++) {
				arr[a][b] = n++;
				a--;
			}
			if ((n - 1) == N * N)break;
			for (int i = 0; i < l; i++) {
				arr[a][b] = n++;
				b++;
			}
			l++;
			for (int i = 0; i < l; i++) {
				arr[a][b] = n++;
				a++;
			}
			for (int i = 0; i < l; i++) {
				arr[a][b] = n++;
				b--;
			}
			l++;
		}
		StringBuilder sb = new StringBuilder();

		int x = 0;
		int y = 0;
		for (int i = 0; i < N; i++) {
			for (int j = 0; j < N; j++) {
				sb.append(arr[i][j] + " ");
				if(K == arr[i][j]) {
					x = i+1;
					y = j+1;
				}
			}
			sb.append("\n");
		}
		sb.append(x+" "+y);
		System.out.println(sb);
	}

}

 

※ 내 생각

이 문제는 구현을 활용하는 문제입니다.

방향을 바꿔가며 값을 넣어주는 문제입니다.
배열에 값을 넣어주고 마지막에 원하는 위치 및 배열을 출력해줍니다.