반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 프로그래머스
- AI논문
- 앱제작
- 그리디
- 에라스테네스의 체
- 백준
- 코테
- 밸만포드알고리즘
- 코딩테스트
- pccp
- ai부수입
- 코딩오류
- 코딩테스크
- 2018캐시
- 논문추천
- 부수입
- 2021카카오
- 백트레킹
- 바이브코딩
- 2020카카오
- 투포인터
- DP
- 콜랩오류
- 파이썬
- Python
- 브루드포스
- 밸만포드
- 2018카카오
- 투잡
- 구글애드몹
Archives
- Today
- Total
kiteday 님의 블로그
[프로그래머스-파이썬] 혼자서 하는 틱택토 본문
반응형
SMALL
https://school.programmers.co.kr/learn/courses/30/lessons/160585
틱택토 문제이다.
1. 가로 세로 양방향 대각선을 기준으로 틱택토가 승리했는지 확인하는 코드와 (승리 시, 게임 즉시 종료) 2. 틱택토 조건을 오바하지 않았는지 확인하는 코드가 필요하다.
주의해야할 점은 틱택토의 빙고 개수가 2가 될 수 있단 점. 나는 처음부터 가로 세로 대각선에 조건을 충족하는지를 True와 False로 해서 크게 문제가 없었는데 많은 사람들이 개수로 체킹해서 이 점을 놓친다는 걸 알았다.
코드는 다음과 같다.
def check_win(board, player):
# 가로
for i in range(3):
if board[i][0] == player and board[i][1]==player and board[i][2]==player:
return True
# 세로
for j in range(3):
if board[0][j] == player and board[1][j]==player and board[2][j]==player:
return True
# 좌상 대각선
flag = True
for k in range(3):
if board[k][k] != player:
flag = False
# 우하 대각선
flag2 = True
for l in range(3):
if board[l][3-l-1] != player:
flag2 = False
if flag or flag2:
return True
else: return False
def solution(board):
answer = 1
board = [list(b) for b in board]
count_o = sum(b.count('O') for b in board)
count_x = sum(b.count('X') for b in board)
o_win = check_win(board, 'O')
x_win = check_win(board, 'X')
if o_win and x_win :
answer = 0
if count_o < count_x or count_o > count_x + 1:
answer = 0
if o_win and not x_win and count_o == count_x:
answer = 0
if x_win and not o_win and count_o > count_x:
answer = 0
return answerLIST
'코딩테스트' 카테고리의 다른 글
| [프로그래머스-파이썬] 자물쇠와 열쇠 (0) | 2025.12.01 |
|---|---|
| [프로그래머스-파이썬] 합승 택시 요금 (0) | 2025.12.01 |
| [프로그래머스-파이썬] 표현 가능한 이진트리 (0) | 2025.11.26 |
| [백준-파이썬] 2293-동전1 (0) | 2025.11.01 |
| [백준-파이썬] 12865-평범한 배낭 (0) | 2025.11.01 |