https://programmers.co.kr/learn/courses/30/lessons/68645
ํ์ด๋ฅผ ์ด๋ป๊ฒ ํด์ผํ ์ง ๋์ ํ ๊ฐ์ด ์์กํ์ ๋น ๋ฅด๊ฒ ๊ตฌ๊ธ๋ง์ ํ๋ค. ๊ตฌ๊ธ๋ง์ ํด๋ณด๋ ์ขํ๋ค์ ๋์ดํด ๊ท์น์ฑ์ ์ฐพ์ ํผ ํ์ด๋ฅผ ๋ดค๋ค. ๊ทธ๋ฅ ํ์ด๋ฅผ ์ฝ์์ ๋๋ ์ดํด๊ฐ ๋์ง ์์์ง๋ง, ์ง์ ๋ฐ๋ผ์ณ๋ณด๋ฉด์ ๋๋ ์ข ์ด์ ์ขํ๋ฅผ ๊ทธ๋ ค๊ฐ๋ฉด์ ํ๋ ์ดํด๊ฐ ๋๊ธฐ ์์ํ๋ค.
1. 3๊ฐ์ง ํจํด์ด ๋ฐ๋ณต : ์๋, ์ค๋ฅธ์ชฝ, ์๋๊ฐ์ -> ๋๋จธ์ง ์ฐ์ฐ์ ์ด์ฉํด, ๊ฐ๊ฐ 0์ธ ๊ฒฝ์ฐ, 1์ธ ๊ฒฝ์ฐ, 2์ธ ๊ฒฝ์ฐ๋ก ๋๋ ๋ฐ๋ณตํ๊ฒ ํ๋ค.
2. ๊ฐ๊ฐ์ ํจํด์ ๋ง๋ ์ขํ์ ๊ท์น์ฑ์ ์ฐพ๋๋ค.
์ขํ๊ฐ (x, y)๋ผ๋ฉด,
์๋ : x๊ฐ ์ฆ๊ฐ๋๋ค.
์ค๋ฅธ์ชฝ : y๊ฐ ์ฆ๊ฐ๋๋ค.
์๋๊ฐ์ : x๊ฐ ๊ฐ์ํ๊ณ , y๋ ๊ฐ์ํ๋ค.
3. count๋ฅผ ์ธ๋ฉฐ ๋ฐฐ์ด์ ๊ฐ์ ๋ฃ๋๋ค.
์ฝ๋
class Solution {
public int[] solution(int n) {
int[] answer = new int[n * (n + 1) / 2];
int[][] arr = new int[n][n];
int count = 1;
int x = -1;
int y = 0;
//์๋, ์ค๋ฅธ์ชฝ, ์๋ก ๋๊ฐ์ ์ด ๋ฐ๋ณต๋๋ค
for(int i = 0; i < n; i++) {
for(int j = i; j < n; j++) {
if(i % 3 == 0) { //์๋
x++;
} else if(i % 3 == 1) { //์ค๋ฅธ์ชฝ
y++;
} else { //์๋ก ๋๊ฐ์
x--;
y--;
}
arr[x][y] = count++;
}
}
//์ ๋ต ๋์ถ
int k = 0;
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
if(arr[i][j] != 0) {
answer[k++] = arr[i][j];
}
}
}
return answer;
}
}
์ฐธ๊ณ
https://minhamina.tistory.com/58
๋ฒ์ธ - ์ฌ๊ฐํ
์์ฉํด์ ์ฌ๊ฐํ์ผ๋ก ํ์ด๋ดค๋ค. ์ฌ๊ฐํ์ด ๋ ์ด๋ ต๋ค.
public static int[][] solution(int n) {
int[][] answer = new int[n][n];
int count = 1;
int x = 0;
int y = -1;
int k = n;
for(int i = 0; i < n * 2 - 1; i++) {
if(i % 2 == 1) {
k--;
}
for(int j = 0; j < k; j++) {
if(i % 4 == 0) { //์ค๋ฅธ์ชฝ
y++;
} else if(i % 4 == 1) { //์๋๋ก
x++;
} else if(i % 4 == 2) { //์ผ์ชฝ
y--;
} else { //์๋ก
x--;
}
answer[x][y] = count++;
}
}
return answer;
}
'Algorithm > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค - ๊ดํธ ํ์ ํ๊ธฐ (0) | 2022.06.22 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค - ์์ ๋์งํ (0) | 2022.06.21 |
ํ๋ก๊ทธ๋๋จธ์ค - ๊ฒ์ ๋งต (0) | 2022.06.14 |
ํ๋ก๊ทธ๋๋จธ์ค - ๋ ๋งต๊ฒ (0) | 2022.06.05 |
ํ๋ก๊ทธ๋๋จธ์ค - ์์ด ๋๋ง์๊ธฐ (0) | 2022.06.04 |