View
[ํ๋ก๊ทธ๋๋จธ์ค] 2๏ธโฃ ์ผ๊ฐ ๋ฌํฝ์ด (JAVA)
์ฑ ์ฝ๋ ๊ฐ์ 2024. 4. 18. 15:05๋ฐ์ํ
์ผ๊ฐ ๋ฌํฝ์ด
์ ์ n์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ๋ค์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๋ฐ๋ณ์ ๊ธธ์ด์ ๋์ด๊ฐ n์ธ ์ผ๊ฐํ์์ ๋งจ ์ ๊ผญ์ง์ ๋ถํฐ ๋ฐ์๊ณ ๋ฐฉํฅ์ผ๋ก ๋ฌํฝ์ด ์ฑ์ฐ๊ธฐ๋ฅผ ์งํํ ํ, ์ฒซ ํ๋ถํฐ ๋ง์ง๋ง ํ๊น์ง ๋ชจ๋ ์์๋๋ก ํฉ์น ์๋ก์ด ๋ฐฐ์ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- n์ 1 ์ด์ 1,000 ์ดํ์ ๋๋ค.
์ ์ถ๋ ฅ ์
n result
4 | [1,2,9,3,10,8,4,5,6,7] |
5 | [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9] |
6 | [1,2,15,3,16,14,4,17,21,13,5,18,19,20,12,6,7,8,9,10,11] |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
- ๋ฌธ์ ์์์ ๊ฐ์ต๋๋ค.
์ ์ถ๋ ฅ ์ #2
- ๋ฌธ์ ์์์ ๊ฐ์ต๋๋ค.
์ ์ถ๋ ฅ ์ #3
- ๋ฌธ์ ์์์ ๊ฐ์ต๋๋ค.
๐ ๊ธฐ์กด ํ์ด
import java.util.*;
class Solution {
public int[] solution(int n) {
int [] dy={1,0,-1};
int [] dx={0,1,-1};
int num = 1;
int[][] arr = new int [n][n];
int x=0, y=0;
while(true){
// 1. ์๋๋ก ์ด๋
while(true){
arr[y][x]= num++;
int ny = y+dy[0];
int nx = x+dx[0];
if (ny==n || arr[ny][x] !=0) break;
x=nx;
y=ny;
}
if (x+1==n || arr[y][x+1] !=0) break;
//์ค๋ฅธ์ชฝ์ผ๋ก ํ์นธ ์ด๋
x+=1;
// 2. ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋
while(true){
arr[y][x]= num++;
int ny = y+dy[1];
int nx = x+dx[1];
if (nx==n || arr[y][nx] !=0) break;
x=nx;
y=ny;
}
if (y-1==-1 || x-1== -1 || arr[y-1][x-1] !=0) break;
y-=1;
x-=1;
// 3. ๋๊ฐ์ ์๋ก ์ด๋
while(true){
arr[y][x]= num++;
int ny = y+dy[2];
int nx = x+dx[2];
if (arr[ny][nx] != 0 || ny==-1 || nx == -1) break;
x=nx;
y=ny;
}
if (arr[y+1][x] != 0 || y+1==n ) break;
y+=1;
}
int[] answer = new int [num-1];
int count=0;
for (int i=0; i< n; i++){
for (int j=0; j<n; j++){
if (arr[i][j]!=0){
answer [count++] = arr[i][j];
}
}
}
return answer;
}
}
๐๋ ๋์ ํ์ด๐
<aside> ๐ ์ธ ๋ฐฉํฅ์ ๋ฐ๋กํ๋ ๊ฒ์ด ์๋๋ผ , ๋ฐฉํฅ ๋ฒกํฐ๋ฅผ ์ด์ฉํด์ ํ๋ฒ์ ์ฒ๋ฆฌํ๋๋ก ํจ 0(์๋) → 1(์ค๋ฅธ์ชฝ ) → 2(์ผ์ชฝ ์)
// 2๋ฅผ ๋์ด๊ฐ๊ฒ ๋๋ฉด ๋ค์ 0์ผ๋ก ๋์์ฌ ์ ์๋๋ก ๋๋จธ์ง ์ฐ์ฐ์ ์ฌ์ฉ d=(d+1)%3
import java.util.*;
class Solution {
private static final int []dx={0,1,-1};
private static final int []dy={1,0,-1};
public int[] solution(int n) {
int d=0; // ๋ฐฉํฅ์ฒ๋ฆฌ ๋ณ์
int num = 1;
int[][] arr = new int [n][n];
int x=0, y=0;
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 [] answer = new int [num - 1];
int index =0;
for (int i=0; i<n; i++){
for (int j=0; j<=i; j++){
answer[index++] = arr[i][j];
}
}
return answer;
}
}
</aside>
๋ฐ์ํ
'์๊ณ ๋ฆฌ์ฆ > ์ฝ๋ฉํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] 1๏ธโฃ ์์ ์ํธ (JAVA) (0) | 2024.06.28 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] 1๏ธโฃ ์์ฐ์ ๋ค์ง์ด ๋ฐฐ์ด๋ก ๋ง๋ค๊ธฐ (JAVA) (0) | 2024.06.27 |
[ํ๋ก๊ทธ๋๋จธ์ค ] 2๏ธโฃ ์ ํ๋ฒํธ ๋ชฉ๋ก (JAVA) (0) | 2023.06.26 |
[ํ๋ก๊ทธ๋๋จธ์ค] 2๏ธโฃ ์นดํซ(JAVA) (0) | 2023.03.20 |
[ํ๋ก๊ทธ๋๋จธ์ค] 2๏ธโฃ ๋ค์ ์๋ ํฐ ์ ์ฐพ๊ธฐ(JAVA) (0) | 2023.03.04 |
reply