알고리즘
[SWEA] [15612] 체스판 위의 룩 배치
J 코딩
2023. 3. 15. 10:22
반응형
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
※ JAVA 코드 (체스판 위의 룩 배치)
import java.util.*;
import java.io.*;
class Solution
{
public static class Node{
int x, y;
public Node(int x, int y) {
this.x = x;
this.y = y;
}
}
public static void main(String args[]) throws Exception, IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
for(int test_case = 1; test_case <= T; test_case++)
{
int[][] arr = new int[8][8];
Node[] node = new Node[64];
int firstChk = 0;
for(int i = 0; i < 8; i++) {
String input = br.readLine();
for(int j = 0; j < 8; j++) {
if(input.charAt(j) == 'O') {
Node now = new Node(i, j);
node[firstChk] = now;
firstChk++;
}
arr[i][j] = input.charAt(j);
}
}
if(firstChk != 8) {
System.out.println("#" + test_case + " no");
continue;
}
boolean lastChk = true;
for(int i = 0; i < 7; i++) {
boolean chk = false;
for(int j = i+1; j < 8; j++) {
if(node[i].x == node[j].x ||
node[i].y == node[j].y) {
chk = true;
break;
}
}
if(chk == true) {
lastChk = false;
break;
}
}
if(lastChk == false) {
System.out.println("#" + test_case + " no");
} else {
System.out.println("#" + test_case + " yes");
}
}
}
}
※ 생각정리 (체스판 위의 룩 배치)
흠,, 너무 간단한 문제였다.
동일한 좌표 (x좌표와 y좌표)에 서로 다른 룩이 존재하지 않으면 되는 로직이 필요했다.
1. 배열에 각 좌표를 받을때 룩이 존재하는 위치의 좌표를 Node[] node 배열에 담아두었다.
2. 우선 룩의 개수를 체크했다. 8개가 아니면 no를 출력하고 끝낸다.
3. node배열에 x좌표가 같거나 y좌표가 같거나 한 다른 좌표가 있는지 찾는다.
4. 있으면 no 없으면 yes를 출력한다.
SWEA를 조금 풀어보았는데 문제의 난이도나 설명같은게 깔끔하지 못하다고 생각된다. 레벨 4의 문제들만 풀어보고 계속 문제를 풀어나갈지 결정해야겠다.
-새벽코딩-
반응형