문제

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/181832
수도코드 작성

작성한 코드
import java.util.*;
class Solution {
public int[][] solution(int n) {
int[][] answer = new int[n][n];
int[] dRow = {0, 1, 0, -1};
int[] dCol = {1, 0, -1, 0};
int row = 0, col = 0, dir = 0;
for(int cnt = 1; cnt <= n*n; cnt++){
answer[row][col] = cnt;
int nr = row + dRow[dir];
int nc = col + dCol[dir];
if(nr < 0 || nr>= n || nc < 0 || nc >= n || answer[nr][nc] != 0){
dir = (dir + 1) % 4;
nr = row + dRow[dir];
nc = col + dCol[dir];
}
row = nr;
col = nc;
}
return answer;
}
}
보완할 점 / 헷갈린 점
2차원배열에 대해서 이해하기 힘들었는데 이번 문제를 통해서 어떤 방식으로 진행되고 방향 전환 및 코드가 어떻게 진행되는 지 알 수 있었다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스 Lv1] 75061번 : 음양 더하기 - JAVA [자바] (0) | 2022.07.05 |
|---|