https://school.programmers.co.kr/learn/courses/30/lessons/68645?language=java
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
> 풀이1
// 아래로 이동
// 오른쪽으로 이동
// 왼쪽 대각선 위로 이동
// 출력
> 풀이2
* 중복된 코드 삭제
class Solution {
public static int[] dx = {0,1,-1}; // {아래, 오른쪽, 왼쪽대각선 위}
public static int[] dy = {1,0,-1}; // {아래, 오른쪽, 왼쪽대각선 위}
public int[] solution(int n) {
int[][] arr = new int[n][n];
int x = 0;
int y = 0;
int d = 0; // d = 0 : 아래, d = 1 : 오른쪽, d = 2 : 왼쪽대각선위
int num = 1;
while(true) {
arr[y][x] = num++;
int nx = x + dx[d];
int ny = y + dy[d];
if(nx == n || ny == n || nx == -1 || ny == -1 || arr[ny][nx] != 0) {
d = (d+1) % 3;
nx = x + dx[d];
ny = y + dy[d];
if(nx == n || ny == n || nx == -1 || ny == -1 || arr[ny][nx] != 0) {
break;
}
}
x = nx;
y = ny;
}
int idx = 0;
int[] answer = new int[num-1];
for(int i = 0; i < n; i++) {
for(int j = 0; j <= i; j++) {
answer[idx++] = arr[i][j];
}
}
return answer;
}
}
'PS > Programmers' 카테고리의 다른 글
프로그래머스 등굣길 Lv3 / JAVA (0) | 2023.04.23 |
---|---|
프로그래머스 정수 삼각형 Lv3 / JAVA (0) | 2023.04.22 |
프로그래머스 피보나치 수 Lv2 / JAVA (0) | 2023.04.22 |
프로그래머스 모의고사 / Lv1 / JAVA (0) | 2023.04.17 |
댓글