[BOJ] 7682. ํ‹ฑํƒํ†  (๐Ÿฅ‡, ๊ตฌํ˜„)

lemythe423ยท2023๋…„ 9์›” 15์ผ
0

BOJ ๋ฌธ์ œํ’€์ด

๋ชฉ๋ก ๋ณด๊ธฐ
49/133
post-thumbnail

๐Ÿ”—

ํ’€์ด

ํ‹ฑํƒํ†  ๊ฒŒ์ž„์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์ข… ์ƒํƒœ์ธ์ง€๋ฅผ ํŒ๋ณ„ํ•˜์‹œ์˜ค.

์ด๊ฒŒ ์™œ ๋ฐฑํŠธ๋ž˜ํ‚น ๋ถ„๋ฅ˜์—...???

์•„๋ฌดํŠผ ๊ฒŒ์ž„์ด ์ข…๋ฃŒ๋œ ์ƒํƒœ๋ƒ ์ง„ํ–‰์ค‘์ด๋ƒ๋ฅผ ๋ฌป๋Š” ๊ฒƒ์ด๋‹ค. ์ข…๋ฃŒ๋œ ์ƒํƒœ๋ผ๊ณ  ํ•˜๋ฉด ๋‘˜ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ด๊ฒผ๊ฑฐ๋‚˜, ๋” ๋‘˜ ๊ณณ์ด ์—†๊ฑฐ๋‚˜ ๋‘˜ ์ค‘ ํ•˜๋‚˜์ผ๊ฒƒ์ด๋‹ค. X๊ฐ€ ๋จผ์ € ๋†“๊ณ  O๊ฐ€ ๋‹ค์Œ์— ๋†“๋Š”๋‹ค๊ณ  ํ–ˆ์œผ๋ฏ€๋กœ, X๊ฐ€ ์ด๊ธฐ๋ ค๋ฉด ํ•ญ์ƒ O๋ณด๋‹ค 1๊ฐœ ๋” ๋งŽ์€ ์ƒํƒœ์ผ ๊ฒƒ์ด๋‹ค. ๋ฐ˜๋Œ€๋กœ O๊ฐ€ ์ด๊ธฐ๋ ค๋ฉด ๋‘˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ™์•„์•ผ ํ•œ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋‹ค ๋†“์•˜์„ ๋•Œ์˜ ์ƒํƒœ๋Š”? X๋Š” 5๊ฐœ O๋Š” 4๊ฐœ๋ฉด ๋œ๋‹ค. ๋‹จ ์ด๋•Œ, ๋‘˜ ์ค‘ ํ•œ ๋ช…๋„ ์ด๊ธด ์ƒํƒœ๋ฉด ์•ˆ ๋œ๋‹ค.

OXOXOXOXX

OXO
XOX
OXX

์ •ํ™•ํ•˜๊ฒŒ๋Š” O๊ฐ€ ์ด๊ธด ์ƒํƒœ๋ฉด ์•ˆ ๋œ๋‹ค. 9์นธ์ด ๋‹ค ์ฐผ๋‹ค๋ฉด X๊ฐ€ O๋ณด๋‹ค 1๋งŒํผ๋งŒ ๋” ๋งŽ์„ ๊ฒƒ์ด๋ฏ€๋กœ.

def win(s, board):
    if board[0] == board[4] == board[8] == s:
        return True
    if board[2] == board[4] == board[6] == s:
        return True
    for i in (0, 3, 6):
        if board[i] == board[i+1] == board[i+2] == s:
            return True
    for j in range(3):
        if board[j] == board[j+3] == board[j+6] == s:
            return True
    return False

def game(board):
    x_count = board.count('X')
    o_count = board.count('O')

    x_wins = win('X', board)
    o_wins = win('O', board)

    if x_count == o_count+1 and x_wins and not o_wins:
        return True
    if x_count == o_count and not x_wins and o_wins:
        return True
    if not x_wins and not o_wins and x_count == 5 and o_count == 4:
        return True
    return False

while True:
    board = input()
    if board == 'end':
        break
    if game(board):
        print('valid')
    else:
        print('invalid')
profile
์•„๋ฌด๋ง์ด๋‚˜ํ•˜๊ธฐ

0๊ฐœ์˜ ๋Œ“๊ธ€