양의 정수 n이 매개변수로 주어집니다. n × n 배열에 1부터 n2 까지 정수를 인덱스 [0][0]부터 시계방향 나선형으로 배치한 이차원 배열을 return 하는 solution 함수를 작성해 주세요.
import java.util.Arrays;
class Solution {
public static void main(String[] args) {
int[][] e = solution(4);
for (int i = 0; i < e.length; i++) {
System.out.println(Arrays.toString(e[i]));
}
}
public static int[][] solution(int n) {
int[][] answer = new int[n][n];
boolean ing = true;
String way="right";
int num=1;
int x=0;
int y=0;
while(ing){
if(way.equals("right")){
answer[x][y]=num;
y++;
if(y>=n){
way="down";
x++;
y--;
}else if(answer[x][y]!=0){
y--;
x++;
way="down";
}
}
else if(way.equals("down")){
answer[x][y]=num;
x++;
if(x>=n){
way="left";
x--;
y--;
}else if(answer[x][y]!=0){
x--;
y--;
way="left";
}
}
else if(way.equals("left")){
answer[x][y]=num;
y--;
if(y<0){
way="up";
y++;
x--;
}else if(answer[x][y]!=0){
y++; x--;
way="up";
}
}
else if(way.equals("up")){
answer[x][y]=num;
x--;
if(x<0){
way="right";
x++;
y++;
}else if(answer[x][y]!=0){
x++; y++;
way="right";
}
}
num++;
if(num>n*n){
ing=false;
}
}
return answer;
}
}
첨에 어떻게 풀어야할지 감이 안잡혔다가 이번 문제는 특이하기 ai 에게 코드 피드백을 받을수 있는 기능이 있어
빈값으로 제출하고 피드백을 받아봤다.
그래서 ai 가 방향 변수를 설정하고 x,y 축으로 풀어보라길래
와 역시 ai 천재인가 생각하고 바로 그 방식 대로 way 변수를설정하고 while 문안에서 규칙적으로 상하좌우로
계속 움직이게 했다 . 그리고 배열이 끝나는 경우 , 다른 수가 있는 경우 일때 방향이 바뀌게 해줬다.
그랬더니 간단하게 답이 나왔다!
'자바 알고리즘 문제' 카테고리의 다른 글
중복된 문자 제거 (0) | 2024.04.23 |
---|---|
문자열 정렬하기 (1) (0) | 2024.04.20 |
평행 (0) | 2024.04.13 |
겹치는 선분의 길이 (10번 테스트만 실패) 도와주실분? (0) | 2024.04.12 |
주사위 게임 3 (0) | 2024.04.11 |