기몽수
코딩 기록일지
기몽수
전체 방문자
오늘
어제
  • 분류 전체보기 (443)
    • 알고리즘 - SWEA (210)
      • D1 (19)
      • D2 (25)
      • D3 (143)
      • D4 (21)
      • D5 (2)
    • 알고리즘 - Programmers (74)
      • Unrated (34)
      • Lv 0 (4)
      • Lv 1 (3)
      • Lv 2 (32)
      • Lv 3 (1)
    • 알고리즘 - Baekjoon (158)
      • Bronze (1)
      • Silver (65)
      • Gold (90)
      • Platinum (2)
    • 취업 (0)
    • SSAFY (1)
hELLO · Designed By 김용수.
기몽수

코딩 기록일지

알고리즘 - SWEA/D3

[SW expert Academy] SWEA 4615번 재미있는 오셀로 게임 자바(Java)

2023. 11. 7. 22:46

 

[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
    '알고리즘 - SWEA/D3' 카테고리의 다른 글
    • [SW expert Academy] SWEA 4676번 늘어지는 소리 만들기 자바(Java)
    • [SW expert Academy] SWEA 1240번 단순 2진 암호코드 자바(Java)
    • [SW expert Academy] SWEA 1244번 최대 상금 자바(Java)
    • [SW expert Academy] SWEA 9658번 유효숫자 표기 자바(Java)
    기몽수
    기몽수

    티스토리툴바