[프로그래머스] Level 2 삼각달팽이 (JAVA)
문제
풀이
value
를 1부터 차례로 증가시키며 알맞은 인덱스에 넣는 방식으로answer
배열을 채워 넣었다.direction
은DOWN
,SIDE
,UP
중 하나이다.DOWN
:index
가indexGap
만큼 증가한다.SIDE
:index
가 1씩 증가한다.UP
:index
가indexGap
만큼 감소한다.
- 한 면에서의
remainingCount
에 따라 방향을 바꾸어가며 적절한 인덱스 규칙을 적용했다.
코드
class Solution {
private static final int DOWN = 0;
private static final int SIDE = 1;
private static final int UP = 2;
public int[] solution(int n) {
int[] answer = new int[n * (n + 1) / 2];
int value = 1, index = 0, direction = DOWN;
int indexGap = 0, remainingCount = n;
while (n > 0) {
remainingCount--;
if (direction == DOWN) {
index += indexGap;
answer[index] = value++;
indexGap++;
if (remainingCount == 0) {
direction = SIDE;
remainingCount = --n;
}
} else if (direction == SIDE) {
answer[++index] = value++;
if (remainingCount == 0) {
direction = UP;
remainingCount = --n;
}
} else {
index = index - indexGap;
answer[index] = value++;
indexGap--;
if (remainingCount == 0) {
direction = DOWN;
remainingCount = --n;
}
}
}
return answer;
}
}
참고
Author And Source
이 문제에 관하여([프로그래머스] Level 2 삼각달팽이 (JAVA)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jwkim/snail저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)