λ¬Έμ 
Arori | λΉμ μ μ§μ
νμκ°μ μ‘°κ±΄μ΄ λ§λμ§ λ€μνλ² νμΈν΄μ£Όμμ
www.sysout.co.kr
체μ€μμ λΉμ(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 |