새벽코딩

[SWEA] [15612] 체스판 위의 룩 배치 본문

알고리즘

[SWEA] [15612] 체스판 위의 룩 배치

J 코딩 2023. 3. 15. 10:22
반응형

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=3&problemLevel=4&contestProbId=AYOBfxwaAXsDFATW&categoryId=AYOBfxwaAXsDFATW&categoryType=CODE&problemTitle=&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=4&pageSize=10&pageIndex=1 

 

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의 문제들만 풀어보고 계속 문제를 풀어나갈지 결정해야겠다.

 

-새벽코딩-

반응형
Comments