๋ฌธ์
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 |