프로그래머스 - 삼각 달팽이 (Level 2)
2023. 12. 22. 17:03ㆍ코딩테스트 정리(자바)
728x90
1. private static final은 모든 인스턴스에서 공유되는 상수 값을 저장하는데 사용되고,
private final은 각 인스턴스마다 고유한 값을 가지면서 그 값을 변경할 수 없게 하고 싶을 때 사용한다.
2. 1차원 배열 원소 직접 초기화하기
: int[] dx={0,1,-1};
class Solution {
//x,y 좌표변화량: 아래로, 오른쪽으로, 왼쪽위로
//static final로 쓴 이유: 변하지 않는 상수이므로
private static final int[] dx={0,1,-1};
private static final int[] dy={1,0,-1};
public int[] solution(int n) {
//1. 숫자 저장할 n*n크기의 2차원 배열 만들기
int[][] triangle=new int[n][n]; //0으로 다 초기화 되어있음
//2. 변수 선언
int x=0; //x좌표
int y=0; //y좌표
int d=0; //방향: 0이면 아래, 1이면 오른쪽, 2이면 왼쪽 위로
int v=1; //배열 채울 숫자값
//3. 반복문으로 채우기
while(true){
triangle[y][x]=v++; //숫자 채우기
int ny=y+dy[d];
int nx=x+dx[d];
if(nx == n || ny == n || triangle[ny][nx] != 0 ){ //진행하지 못하면 방향바꾸기
d=(d+1)%3;
ny=y+dy[d];
nx=x+dx[d];
if(nx == n || ny == n || triangle[ny][nx] != 0) //방향을 틀어도 진행하지 못하면 종료
break;
}
//좌표이동
x+=dx[d];
y+=dy[d];
}
// 4. 1차원 배열로 옮겨담기
int[] answer =new int[v-1];
int i=0;
for(int y_=0;y_<n;y_++){
for(int x_=0;x_<y_+1;x_++){
answer[i++]=triangle[y_][x_];
}
}
return answer;
}
}728x90
'코딩테스트 정리(자바)' 카테고리의 다른 글
| 프로그래머스 - 거리두기 확인하기(Level 2) (2) | 2023.12.28 |
|---|---|
| 프로그래머스 - 자연수 뒤집어 배열로 만들기 (Level 1) (2) | 2023.12.25 |
| 프로그래머스 - 행렬의 곱셈 (Level 2) (3) | 2023.12.23 |
| 코딩테스트 문제풀이방법 (3) | 2023.12.21 |
| 프로그래머스 - 교점에 별 만들기 (Level 2) (2) | 2023.12.21 |