2μ°¨μ λ°°μ΄μμ λ¬ν½μ΄λ‘ μ΄λνλ λ°©λ²μ μ 리νλ€. π
μμνλ κ³³μμ μνμ’μ° λ°©ν₯ (λ°μκ³ λλ μκ³λ°©ν₯)μ λ°λΌ λ¬ν½μ΄ λ°°μ΄μ ννκ° λ¬λΌμ§λ€.
λ°°μ΄ μ€μ (N/2, N/2) μμλΆν° μμ
- μ€μ(N/2, N/2)μμλΆν° μμν΄μΌνλ―λ‘ Nμ΄ νμμ΄μ΄μΌ νλ€.
- ←, ↓μΌ λλ 1, 3, 5, 7 .... λ§νΌ μ΄λνλ μΉΈμ΄ μ¦κ°νλ€.
- →, ↑μΌ λλ 2, 4, 6, 8 .... λ§νΌ μ΄λνλ μΉΈμ΄ μ¦κ°νλ€.
- 2λ² λ°©ν₯μ λ°κΏ λλ§λ€ μ΄λνλ μΉΈμ μ¦κ°μν¨λ€. π
moveCnt++
- νμ¬λ μ€μμμ μΌμͺ½λ°©ν₯μΌλ‘ μμν΄μ λ°μκ³λ°©ν₯μΌλ‘ λκ³ μμ§λ§, μΌμͺ½ μΈμ μ, ν, μ° λ°©ν₯μΌλ‘ μμν΄μ λ°μκ³ λλ μκ³λ°©ν₯μΌλ‘ κ°λ κ²λ λμΌν λ°©λ²μΌλ‘ μ§ννλ©΄ λλ€. λ°©ν₯μ λ κ°μ© μ§λ§ μ§μ΄μ£Όλ©΄ κ°λ₯ !
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class SnailMove_Center {
static int[] dr = {0, 1, 0, -1}; //μ, λ¨, λ, λΆ
static int[] dc = {-1, 0, 1, 0};
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
// r, cλ λ°°μ΄μ μ€μμ μμΉν¨
int r = N/2;
int c = N/2;
int[][] arr = new int[N][N];
int moveCnt = 1; // μμ§μ΄λ λ°©ν₯μ΄ λ λ² λ°λ λλ§λ€ μ¦κ°ν κ²μ
int dir = 0; // νμ¬ λ°©ν₯
int num = 1;
arr[r][c] = num;
while(true){
for (int i = 0; i < 2; i++) {
for (int j = 0; j < moveCnt; j++) {
r += dr[dir];
c += dc[dir];
arr[r][c] = ++num;
}
dir = (dir+1)%4;
}
moveCnt++;
if(moveCnt==N){
for(int i=0; i<moveCnt-1; i++){
r += dr[dir];
c += dc[dir];
arr[r][c] = ++num;
}
break;
}
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
}
λ°°μ΄ (0, 0) μμλΆν° μμ
- (0, 0)μμλΆν° μμνλ€.
- → ↓ ← ↑ λ°©ν₯μΌλ‘ κ³μ μ§ννλ€κ° μ’νκ°μ λ²μλ₯Ό λ²μ΄λκ±°λ μ’νμ μ΄λ―Έ κ°μ΄ μ±μμ‘λ€λ©΄ λ°©ν₯μ λ°κΎΌλ€.
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class SnailMove_First {
static int[] dr = {0, 1, 0, -1}; // μ°νμ’μ
static int[] dc = {1, 0, -1, 0};
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[][] arr = new int[N][N];
int dir = 0;
int r=0, c=0;
int nr, nc;
for (int i = 1; i <= N * N; i++) {
arr[r][c] = i;
// λ€μ μ΄λν κ³³μ μ’νκ°
nr = r + dr[dir];
nc = c + dc[dir];
// λ€μ μ΄λν κ³³μ μ’νκ°μ΄ λ²μλ₯Ό λ²μ΄λκ±°λ μ΄λ―Έ μ’νκ°μ΄ μ±μμ‘λ€λ©΄ λ°©ν₯ λ°κΎΈκΈ°
if (nr < 0 || nc < 0 || nr >= N || nc >= N || arr[nr][nc] != 0) dir = (dir + 1) % 4;
// μ΅μ’
κ²°μ λ λ°©ν₯μΌλ‘ μ΄λν κ³³ μ μ₯
r += dr[dir];
c += dc[dir];
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
}
ν΄λΉ κ΄λ ¨ λ¬Έμ
SW Expert Academy
SW νλ‘κ·Έλλ° μλ κ°νμ λμμ΄ λλ λ€μν νμ΅ μ»¨ν μΈ λ₯Ό νμΈνμΈμ!
swexpertacademy.com
https://www.acmicpc.net/problem/20057
20057λ²: λ§λ²μ¬ μμ΄μ ν λ€μ΄λ
λ§λ²μ¬ μμ΄κ° ν λ€μ΄λλ₯Ό λ°°μ κ³ , μ€λμ ν λ€μ΄λλ₯Ό ν¬κΈ°κ° N×NμΈ κ²©μλ‘ λλμ΄μ§ λͺ¨λλ°μμ μ°μ΅νλ €κ³ νλ€. μμΉ (r, c)λ 격μμ rν cμ΄μ μλ―Ένκ³ , A[r][c]λ (r, c)μ μλ λͺ¨λμ μμ
www.acmicpc.net
https://www.acmicpc.net/problem/1913
1913λ²: λ¬ν½μ΄
Nκ°μ μ€μ κ±Έμ³ νλ₯Ό μΆλ ₯νλ€. κ° μ€μ Nκ°μ μμ°μλ₯Ό ν μΉΈμ© λμ΄μ μΆλ ₯νλ©΄ λλ©°, μλ¦Ώμλ₯Ό λ§μΆ νμκ° μλ€. N+1λ²μ§Έ μ€μλ μ λ ₯λ°μ μμ°μμ μ’νλ₯Ό λνλ΄λ λ μ μλ₯Ό ν μΉΈ λμ΄μ
www.acmicpc.net
'μκ³ λ¦¬μ¦ > ποΈ μ 리' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
LCS (μ΅μ₯ κ³΅ν΅ λΆλΆ μμ΄) (0) | 2024.03.11 |
---|---|
Topological Sort (μμμ λ ¬) (1) | 2024.02.27 |
DP - Knapsack (λ°°λλ¬Έμ ) (1) | 2024.02.05 |
LIS (μ΅μ₯μ¦κ°λΆλΆμμ΄) (1) | 2023.12.07 |
MST(μ΅μμ μ₯νΈλ¦¬) - ν¬λ£¨μ€μΉΌ & νλ¦Ό μκ³ λ¦¬μ¦ (1) | 2023.10.23 |