땅지원
땅지원's Personal blog
땅지원
전체 방문자
오늘
어제
  • 전체 (353)
    • Frontend (2)
      • React (2)
    • Backend (90)
      • Java (16)
      • Python (19)
      • Spring (23)
      • Database (21)
      • Troubleshooting (8)
    • DevOps (27)
      • ELK (13)
    • CS (40)
    • OS (2)
      • Linux (2)
    • Algorithm (95)
      • concept (18)
      • Algorithm Problem (77)
    • 인공지능 (25)
      • 인공지능 (12)
      • 연구노트 (13)
    • 수업정리 (35)
      • 임베디드 시스템 (10)
      • 데이터통신 (17)
      • Linux (8)
    • 한국정보통신학회 (5)
      • 학술대회 (4)
      • 논문지 (1)
    • 수상기록 (8)
      • 수상기록 (6)
      • 특허 (2)
    • 삼성 청년 SW 아카데미 (6)
    • 42seoul (12)
    • Toy project (3)
    • 땅's 낙서장 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 20.11.6 BB21플러스 온라인 학술대회
  • 20.10.30 한국정보통신학회 온라인 학술대회

인기 글

태그

  • D
  • ㅗ
  • I
  • E
  • 이것이 리눅스다 with Rocky Linux9

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
땅지원

땅지원's Personal blog

Algorithm/Algorithm Problem

백준 7682 틱택토(구현)

2022. 10. 25. 16:28
 

7682번: 틱택토

틱택토 게임은 두 명의 사람이 번갈아가며 말을 놓는 게임이다. 게임판은 3×3 격자판이며, 처음에는 비어 있다. 두 사람은 각각 X 또는 O 말을 번갈아가며 놓는데, 반드시 첫 번째 사람이 X를 놓고

www.acmicpc.net

이겼을때가 아니라 "최종" 상태를 판단하는 것
게임 진행하다가 나타날 수 있는 중간상태도 모두 invalid 이다


따라서 남은 point_cnt가 핵심이 되야한다

if point_cnt 없을때(모든칸이 꽉찼고 X먼저 두니까 x가 1 많아야함)
      if x_cnt = 5, o_cnt = 4
          if X빙고 && O빙고
              false
          else if !X빙고 && O빙고
              false
          true
      else
          false

 


 else point_cnt 없을때(게임중간에 누군가 이겨서 멈췄다는 거니까)
      if X가 이길 때(x_cnt = o_cnt+1)
          X빙고 && !O빙고
      if O가 이길 때(x_cnt = o_cnt)
          !X빙고 && O빙고

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main_7682 {
    static char[][] board;
    static int x_cnt, o_cnt,point_cnt;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        while (true){
            String str = br.readLine();

            if (str.equals("end"))
                break;
            x_cnt = 0;
            o_cnt = 0;
            point_cnt = 0;

            board = new char[3][3];
            for (int i = 0; i < 3; i++) {
                for (int j = 0; j < 3; j++) {
                    board[i][j] = str.charAt((i*3)+j);
                    if (board[i][j] == 'X')
                        x_cnt++;
                    else if (board[i][j] == 'O')
                        o_cnt++;
                    else if (board[i][j] == '.')
                        point_cnt++;
                }
            }

            if (check())
                System.out.println("valid");
            else
                System.out.println("invalid");




        }
    }
public static boolean bingo(char c){
    //가로
    for (int i = 0; i < 3; i++) {
        if (board[i][0] == c && board[i][1] == c && board[i][2] == c )
            return true;
    }

    //세로
    for (int i = 0; i < 3; i++) {
        if (board[0][i] == c && board[1][i] == c && board[2][i] == c )
            return true;
    }

    //대각선
    if (board[0][0] == c && board[1][1] == c && board[2][2] == c )
        return true;

    if (board[2][0] == c && board[1][1] == c && board[0][2] == c )
        return true;

    return false;
}

    public static boolean check(){
        if (x_cnt < o_cnt)
            return false;

        if (x_cnt == o_cnt+1 && x_cnt + o_cnt == 9){
            if (!bingo('X') && bingo('O'))
                return false;
            else if (bingo('X') && bingo('O'))
                return false;
            return true;
        }
        else{
            if (bingo('X') && !bingo('O') && x_cnt == o_cnt+1)
                return true;
            if (bingo('O') && !bingo('X') && x_cnt == o_cnt)
                return true;
            return false;
        }
    }

}

'Algorithm > Algorithm Problem' 카테고리의 다른 글

SWEA 1859 백만 장자 프로젝트(그리디) ★★  (0) 2022.11.03
백준 3687 성냥개비(DP, 그리디)  (0) 2022.10.31
백준 1094 막대기(구현, 비트마스킹)  (0) 2022.10.24
백준 14722 우유도시(DP)  (0) 2022.10.24
백준 2931 가스관(구현, 시뮬레이션)  (0) 2022.10.24
    'Algorithm/Algorithm Problem' 카테고리의 다른 글
    • SWEA 1859 백만 장자 프로젝트(그리디) ★★
    • 백준 3687 성냥개비(DP, 그리디)
    • 백준 1094 막대기(구현, 비트마스킹)
    • 백준 14722 우유도시(DP)
    땅지원
    땅지원
    신입 개발자의 우당탕탕 기술 블로그

    티스토리툴바