[D3] 재미있는 오셀로 게임 - 4615
성능 요약
메모리: 29,792 KB, 시간: 159 ms, 코드길이: 1,943 Bytes
제출 일자
2023-11-07 22:41
출처: SW Expert Academy, https://swexpertacademy.com/main/code/problem/problemList.do
import java.util.Scanner;
class Solution {
public static void main(String args[]) throws Exception {
Scanner sc = new Scanner(System.in);
// 상,하,좌,우,좌상,좌하,우위,우하
int[] dirX = {-1,1,0,0,-1,1,-1,1};
int[] dirY ={0,0,-1,1,-1,-1,1,1};
int[][] board;
int T = sc.nextInt();
for(int tc = 1; tc <= T; tc++) {
int n = sc.nextInt();
int m = sc.nextInt();
int black = 0;
int white = 0;
board = new int[n+1][n+1];
board[n/2][n/2] = 2; board[n/2+1][n/2+1] = 2;
board[n/2+1][n/2] = 1; board[n/2][n/2+1] = 1;
while(m --> 0){
int x = sc.nextInt();
int y = sc.nextInt();
int color = sc.nextInt();
board[x][y] = color;
for(int d = 0; d < 8; d++){
int nx = x + dirX[d];
int ny = y + dirY[d];
while(nx >= 1 && nx <= n && ny >= 1 && ny <= n ){
if(board[nx][ny] == 0) {
break;
}else if(board[nx][ny] == color){
int i = x;
int j = y;
while(!(i == nx && j == ny)){
board[i][j] = color;
i += dirX[d];
j += dirY[d];
}
break;
}
nx += dirX[d];
ny += dirY[d];
}
}
}
for(int[] line : board){
for(int color : line){
if(color == 1) black++;
else if(color == 2) white++;
}
}
System.out.println("#" + tc + " " + black + " " +white);
}
}
}
'알고리즘 - SWEA > D3' 카테고리의 다른 글
[SW expert Academy] SWEA 4676번 늘어지는 소리 만들기 자바(Java) (0) | 2023.11.08 |
---|---|
[SW expert Academy] SWEA 1240번 단순 2진 암호코드 자바(Java) (0) | 2023.11.08 |
[SW expert Academy] SWEA 1244번 최대 상금 자바(Java) (0) | 2023.11.07 |
[SW expert Academy] SWEA 9658번 유효숫자 표기 자바(Java) (0) | 2023.11.07 |
[SW expert Academy] SWEA 9280번 진용이네 주차타워 자바(Java) (0) | 2023.11.07 |