https://school.programmers.co.kr/learn/courses/30/lessons/68645
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
저는 구현을 통해 문제를 해결하였습니다.
저는 배열을 통해 삼각 달팽이를 표현하였고, y <= x 인 부분들만 사용하여 표현하였습니다.
저는 밑으로 가고 범위를 넘거나 채워져있다면 방향을 오른쪽으로 돌리고 또 범위를 넘기거나 채워져있다면 왼쪽 위 방향으로 진행하도록 하여 문제를 해결하였습니다.
class Solution {
public int[] solution(int n) {
int[] answer = makeMap(n);
return answer;
}
private static final int[] DY = {1,0,-1};
private static final int[] DX = {0,1,-1};
private static final int EMPTY = 0;
private static int[] makeMap(int n){
int[][] map = new int[n][n];
int num = 0;
int y = 0;
int x = 0;
int dir = 0;
while(y >= 0 && y < n && x >= 0 && x < n && map[y][x] == EMPTY){
map[y][x] = ++num;
y += DY[dir];
x += DX[dir];
if(y < 0 || y >= n || x < 0 || x >= n || map[y][x] != EMPTY){
y -= DY[dir];
x -= DX[dir];
dir = (dir + 1) % 3;
y += DY[dir];
x += DX[dir];
}
}
int[] result = new int[num];
int index = 0;
for(int i = 0 ; i < n ; i++){
for(int j = 0 ; j < n ; j++){
if(map[i][j] == EMPTY){
break;
}
result[index++] = map[i][j];
}
}
return result;
}
}
'알고리즘' 카테고리의 다른 글
백준 22114번 창영이와 점프 (JAVA) (0) | 2023.05.20 |
---|---|
백준 16441번 아기돼지와 늑대 (JAVA) (1) | 2023.05.19 |
프로그래머스 정수를 나선형으로 배치하기 (JAVA) (0) | 2023.05.17 |
백준 2851번 슈퍼 마리오 (JAVA) (1) | 2023.05.16 |
백준 18404번 현명한 나이트 (JAVA) (0) | 2023.05.14 |