https://school.programmers.co.kr/learn/courses/30/lessons/160585
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
dx = [0, 1, 1, 1]
dy = [1, 0, 1, -1]
tictack = []
def winCnt(x, y, player):
cnt = 0
for i in range(4):
d = i
win = True
pcnt = 0
for j in range(3):
nx = x + dx[d] * j
ny = y + dy[d] * j
if 0 <= nx < 3 and 0 <= ny < 3:
if tictack[nx][ny] != player:
win = False
break
else:
pcnt += 1
if win == True and pcnt == 3:
cnt += 1
return cnt
def solution(board):
answer = -1
winDict = {}
cntDict = {}
winDict["X"] = 0
winDict["O"] = 0
cntDict["X"] = 0
cntDict["O"] = 0
for i in range(3):
tictack.append(list(board[i]))
for i in range(3):
for j in range(3):
player = tictack[i][j]
if player != ".":
cntDict[player] += 1
winDict[player] += winCnt(i, j, player)
if cntDict["O"] - cntDict["X"] > 1 or cntDict["O"] - cntDict["X"] < 0:
answer = 0
elif winDict["O"] == 2 and winDict["X"] == 0 and cntDict["O"] - cntDict["X"] == 1:
answer = 1
elif winDict["O"] + winDict["X"] > 1:
answer = 0
elif winDict["O"] == 1 and cntDict["O"] - cntDict["X"] != 1:
answer = 0
elif winDict["X"] == 1 and cntDict["O"] != cntDict["X"]:
answer = 0
else:
answer = 1
return answer
TC: 30번 해결 테케
["OXO", "XOX", "OXO"] -> 1
["OOO", "OXX", "OXX"] -> 1
728x90
'코테 > 프로그래머스' 카테고리의 다른 글
프로그래머스 리코쳇 로봇 파이썬 (1) | 2023.06.11 |
---|---|
프로그래머스 미로탈출 (0) | 2023.06.09 |
프로그래머스 바탕화면 정리 파이썬 (0) | 2023.06.08 |
프로그래머스 자물쇠와 열쇠 (0) | 2023.01.08 |
프로그래머스 문자열 압축 (0) | 2023.01.08 |