코딩공부/프로그래머스

[프로그래머스] Lv2 혼자서 하는 틱택토 C#

usingsystem 2023. 12. 20. 15:25
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/160585?language=csharp

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

소스코드

using System;

public class Solution {
    public int solution(string[] board) {
        // 아무것도없으면 성공
      // o,x 개수가 같으면 실패

      int countO = 0;
      int countX = 0;

      for (int y = 0; y < 3; y++)
      {
          for (int x = 0; x < 3; x++)
          {
              if (board[y][x] == 'O')
                  countO++;
              else if (board[y][x] == 'X')
                  countX++;
          }
      }

      if (countO > countX + 1)
          return 0;
      if (countO < countX)
          return 0;

      int continuO = 0;
      int continuX = 0;

      for (int i = 0; i < 3; i++)
      {
              if (board[i] == "OOO")
              continuO++;
          else if (board[i] == "XXX")
               continuX++;

          if (board[0][i] == 'O' && board[1][i] == 'O' && board[2][i] == 'O')
              continuO++;
          if (board[0][i] == 'X' && board[1][i] == 'X' && board[2][i] == 'X')
              continuX++;
      }

      if (board[1][1] == 'X')
      {
          if (board[0][0] == 'X' && board[2][2] == 'X')
              continuX++;
          if (board[0][2] == 'X' && board[2][0] == 'X')
              continuX++;
      }
      else if (board[1][1] == 'O')
      {
          if (board[0][0] == 'O' && board[2][2] == 'O')
              continuO++;
          if (board[0][2] == 'O' && board[2][0] == 'O')
              continuO++;
      }

      if (continuX > 0 && continuO > 0)
          return 0;
          if (continuO  > continuX && countO == countX)
           return 0;

       if (continuX > continuO && countO > countX)
           return 0;


      return 1;
    }
}
728x90