λ¬Έμ
체μ€μμ λΉμ(Bishop)μ μλ κ·Έλ¦Όκ³Ό κ°μ΄ λκ°μ λ°©ν₯μΌλ‘ λͺ μΉΈμ΄λ ν λ²μ μ΄λν μ μμ΅λλ€. λ§μ½ν λ²μ μ΄λ κ°λ₯ν μΉΈμ μ²΄μ€ λ§μ΄ λμ¬μλ€λ©΄ κ·Έ μ²΄μ€ λ§μ μ‘μ μ μμ΅λλ€.
8 x 8 ν¬κΈ°μ 체μ€ν μμ μ¬λ¬ κ°μ λΉμ(Bishop)μ΄ λμ¬μμ΅λλ€. μ΄λλΉμ(Bishop)λ€μκ² ν λ²μ μ‘νμ§ μλλ‘ μλ‘μ΄ λ§μ λμ μ μλ λΉμΉΈμ κ°μλ₯Ό ꡬνλ €κ³ ν©λλ€.
μ κ·Έλ¦Όμμ μμ΄ κ·Έλ €μ§ μΉΈμ λΉμμκ² ν λ²μ μ‘νλ μΉΈλ€μ΄λ©° λ°λΌμ μ²΄μ€ λ§μ λμ μ μλ λΉμΉΈ κ°μλ 50κ°μ λλ€.
8 x 8 체μ€νμ λμΈ λΉμμ μμΉ bishopsκ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ λΉμμκ² ν λ²μ μ‘νμ§ μλλ‘ μλ‘μ΄ μ²΄μ€ λ§μ λμ μ μλ λΉμΉΈ κ°μλ₯Ό return νλλ‘ solution λ©μλλ₯Ό μμ±ν΄μ£ΌμΈμ.
맀κ°λ³μ μ€λͺ
체μ€νμ λμΈ λΉμμ μμΉ bishopsκ° solution λ©μλμ 맀κ°λ³μλ‘ μ£Όμ΄μ§λλ€.
- bishopsλ λΉμμ μμΉκ° λ¬Έμμ΄ ννλ‘ λ€μ΄μλ λ°°μ΄μ λλ€.
- bishopsμ κΈΈμ΄λ 1 μ΄μ 64 μ΄νμ λλ€.
- λΉμμ΄ λμΈ μμΉλ μνλ²³ λλ¬Έμμ μ«μλ‘ νκΈ°ν©λλ€.
- μνλ²³ λλ¬Έμλ κ°λ‘ λ°©ν₯μ«μλ μΈλ‘ λ°©ν₯ μ’νλ₯Ό λνλ λλ€.
- μλ₯Ό λ€μ΄ μ κ·Έλ¦Όμμ λΉμμ΄ μλ μΉΈμ 'D5'λΌκ³ ννν©λλ€.
- ν μΉΈμ μ¬λ¬ λΉμμ΄ λμ΄κ±°λμλͺ»λ μμΉκ° μ£Όμ΄μ§λ κ²½μ°λ μμ΅λλ€.
return κ° μ€λͺ
λΉμμκ² ν λ²μ μ‘νμ§ μλλ‘ μλ‘μ΄ μ²΄μ€ λ§μ λμ μ μλ λΉμΉΈμ κ°μλ₯Ό return ν΄μ£ΌμΈμ.
μμ
bishops | return |
["D5"] | 50 |
["D5", "E8", "G2"] | 42 |
μμ μ€λͺ
μμ #1λ¬Έμ μ λμ¨ μμμ κ°μ΅λλ€.
μμ #2
κ·Έλ¦Όκ³Ό κ°μ΄ μμ΄ κ·Έλ €μ§ μΉΈμ λΉμμκ² ν λ²μ μ‘νλ μΉΈλ€μ΄λ©° λ°λΌμ μ²΄μ€ λ§μ λμ μ μλ λΉμΉΈ κ°μλ 42κ°μ λλ€.
νμ΄
μ€λͺ
λλ ν΄λΉ λ¬Έμ λ₯Ό λ¨Όμ λΉμμ΄ μ΄λ κ°λ₯ν μ’νμ κ°μ κ³μ°νλ €κ³ νλ€. λ¨Όμ 체μ€νμ 8*8μ ν¬κΈ°λ₯Ό κ°μ§λ―λ‘ λΉμμ μ’νλ 8λ₯Ό μ΄κ³Όνκ±°λ -1λ³΄λ€ μμ μ μλ€.
κ·Έλ¦¬κ³ λΉμμ λκ°μ μΌλ‘ μνμ’μ°λ₯Ό μ΄λνκΈ° λλ¬Έμ νμ¬ λΉμμ μμΉ κΈ°μ€
- xμΆ
- μ¦κ°νλ μμ
- nx = i + μ£Όμ΄μ§ μ’νμ xκ°
- ny = i + μ£Όμ΄μ§ μ’νμ yκ°
- κ°μνλ μμ
- mx = μ£Όμ΄μ§ μ’νμ xκ° - 1
- my = μ£Όμ΄μ§ μ’νμ yκ° - 1
- μ¦κ°νλ μμ
- yμΆ
- μ¦κ°νλ μμ
- ix = nx
- iy = ny - (νμ¬ μΈλ±μ€ * 2)
- κ°μνλ μμ
- jx = nx - (νμ¬ μΈλ±μ€ * 2)
- jy = ny
- μ¦κ°νλ μμ
μ΄λ κ² μ΄ 4κ°μ§λ‘ λλμ΄ μ°μ°ν μ μλλ‘ μμ΄λμ΄λ₯Ό μ§°λ€.
κ·Έλ¦¬κ³ λ°©λ¬Έν μ’νλ νμ¬μ λΉμμ΄ μ΄λν μ μλ μΉΈμ΄λ―λ‘ λ°©λ¬Έ 체ν¬λ₯Ό ν΄λμ λ€ μ²΄μ€νμ λ€μ μ‘°νν΄μ λ°©λ¬Έν μΉΈμ κ°μλ₯Ό μΈμ΄μ μ£Όμ΄μ§ λΉμμ΄ μ΄λκ°λ₯ν μΉΈμ κ°μλ₯Ό νμ ν μ μκ² νλ€.
μ½λ
package λͺ¨λ°μΌλ¦¬λ_μ½λ©ν
μ€νΈ_03;
public class question_03 {
public int solution(String[] bishops) {
// μ¬κΈ°μ μ½λλ₯Ό μμ±ν΄μ£ΌμΈμ.
// 0. λΉμ μμΉ μΈλ±μ€ λ²νΈλ‘ λ³ν
int[][] idxTmp = new int[bishops.length][2];
// 1. λΉμ μ’ν λ°©λ¬Έ μ€μ
int[][] xy = new int[8][8];
// 2. λΉμμ νμ¬ μμΉ λ°©λ¬Έ 체ν¬
for (int i = 0; i < idxTmp.length; i++) {
idxTmp[i][0] = bishops[i].charAt(0) - 'A';
idxTmp[i][1] = bishops[i].charAt(1) - '1';
xy[idxTmp[i][0]][idxTmp[i][1]] += 1;
}
// 4. λΉμ μ΄λ κ°λ₯ 거리 λ°©κ΅° μ€μ λ° κ°μ μΈκΈ°
// 4-1. νμ¬ λΉμ μμΉ μ μλ λ‘ μ΄λνλ©΄μ λ²½μ λΆλͺνλμ§, κ²ΉμΉλ λΉμ νΉμ λ€λ₯Έ λ§μ μλμ§ νμΈ
for (int go = 0; go < bishops.length; go++) {
int x = idxTmp[go][0], y = idxTmp[go][1];
int i = 0;
while (i < 8) {
// xμΆμ κΈ°μ€μΌλ‘
int nx = i + idxTmp[go][0], ny = i + idxTmp[go][1];
int mx = x - 1, my = y - 1;
// yμΆμ κΈ°μ€μΌλ‘
int ix = nx, iy = ny - (i * 2);
int jx = nx - (i * 2), jy = ny;
// xμΆ κΈ°μ€ μ¦κ°νλ μμ
if (nx < 8 && ny < 8 && nx > -1 && ny > -1) {
xy[nx][ny] = 1;
}
// xμΆ κΈ°μ€ κ°μνλ μμ
if (mx < 8 && my < 8 && mx > -1 && my > -1) {
xy[mx][my] = 1;
}
// yμΆ κΈ°μ€ μ¦κ°νλ μμ
if (ix < 8 && iy < 8 && ix > -1 && iy > -1) {
xy[ix][iy] = 1;
}
// yμΆ κΈ°μ€ κ°μνλ μμ
if (jx < 8 && jy < 8 && jx > -1 && jy > -1) {
xy[jx][jy] = 1;
}
x = mx;
y = my;
i++;
}
}
int answer = 0;
for (int i = 0; i < xy.length; i++) {
for (int k = xy.length - 1; k > -1; k--) {
System.out.print(xy[i][k] + " ");
if (xy[i][k] == 0) {
answer++;
}
}
System.out.println();
}
System.out.println("answer = " + answer);
return answer;
}
// μλλ ν
μ€νΈμΌμ΄μ€ μΆλ ₯μ ν΄λ³΄κΈ° μν main λ©μλμ
λλ€.
public static void main(String[] args) {
question_03 sol = new question_03();
String[] bishops1 = { new String("D5") };
int ret1 = sol.solution(bishops1);
// [μ€ν] λ²νΌμ λλ₯΄λ©΄ μΆλ ₯ κ°μ λ³Ό μ μμ΅λλ€.
System.out.println("solution λ©μλμ λ°ν κ°μ " + ret1 + " μ
λλ€.");
System.out.println();
String[] bishops2 = { new String("D5"), new String("E8"), new String("G2") };
int ret2 = sol.solution(bishops2);
// [μ€ν] λ²νΌμ λλ₯΄λ©΄ μΆλ ₯ κ°μ λ³Ό μ μμ΅λλ€.
System.out.println("solution λ©μλμ λ°ν κ°μ " + ret2 + " μ
λλ€.");
}
}
'Algorithm' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
νλ‘κ·Έλλ¨Έμ€ | ν¬λ μΈ μΈνλ½κΈ° κ²μ, Stack (0) | 2020.12.11 |
---|---|
νλ‘κ·Έλλ¨Έμ€ | λ κ° λ½μμ λνκΈ°, μμ νμ, HashSet (0) | 2020.12.11 |
Cos Pro 1κΈ | λ¬Έμμ΄ ν©μ±νκΈ°, μμ νμ (0) | 2020.12.10 |
Cos Pro 1κΈ | λλ₯΄μμμ¦ μ (0) | 2020.12.10 |
λ°±μ€ 1322 | λΉνΈ μ°μ°, Xμ K (0) | 2020.11.25 |