Algorithm Problem/Python

[python] λ°±μ€€ - 2615. 였λͺ©

deo2kim 2021. 9. 3. 20:14
λ°˜μ‘ν˜•

πŸ€”λ¬Έμ œ ν•΄κ²°

  • 6λͺ©μ€ μ•ˆλœλ‹€.
  • 닡을 좜λ ₯ν•  λ•Œ, μ™Όμͺ½ μš°μ„ , μœ„μͺ½ μš°μ„  μ΄λ―€λ‘œ
  • λ°”λ‘‘λŒμ„ κΈ°μ€€μœΌλ‘œ μš°μƒ, 우, μš°ν•˜, ν•˜ μ΄λ ‡κ²Œ 4λ°©ν–₯만 고렀해쀬닀.
  1. λ¨Όμ € λ°”λ‘‘λŒ ν•˜λ‚˜λ₯Ό μ„ νƒν•˜κ³ 
    1. 이 λ°”λ‘‘λŒμ΄ λμ—μ„œ μ‹œμž‘ν•˜λŠ”μ§€ or 끝이 μ•„λ‹ˆλΌλ©΄ λ‚΄κ°€ 체크할 λ°©ν–₯의 λ°˜λŒ€λ°©ν–₯으둜 μƒλŒ€ λ°”λ‘‘λŒμ΄ μ—†λŠ”μ§€
      1. 윑λͺ© 방지
    2. μœ„μ˜ 쑰건에 λ§žλ‹€λ©΄ λ‚΄κ°€ μ •ν•œ λ°©ν–₯으둜 νƒμƒ‰ν•˜λ©° 같은 μƒ‰μ˜ λ°”λ‘‘λŒμ„ 계속 찾음
    3. μƒλŒ€ λ°”λ‘‘λŒμ„ λ§Œλ‚˜κ±°λ‚˜ λ°”λ‘‘νŒ λ°–μœΌλ‘œ λ‚˜κ°€λ©΄ λ‚΄κ°€ 찾은 λ°”λ‘‘λŒμ˜ 개수λ₯Ό 체크
    4. λ°”λ‘‘λŒμ„ 4개 더 μ°Ύμ•˜μœΌλ©΄ 성곡
    5. μ•„λ‹ˆλ©΄ μ‹€νŒ¨

 

 

 

πŸ’»μ†ŒμŠ€ μ½”λ“œ

 import sys

input = sys.stdin.readline
LENGTH = 19

board = [list(map(int, input().split(" "))) for _ in range(19)]

# μš°μƒ, 우, μš°ν•˜, ν•˜ - 3가지 λ°©ν–₯만 κ³ λ €
dx, dy = [-1, 0, 1, 1], [1, 1, 1, 0]


def is_in(x, y):
    if 0 <= x < LENGTH and 0 <= y < LENGTH:
        return True
    else:
        return False


def is_omok(x, y, player):
    for k in range(len(dx)):
        # λ°˜λŒ€λ°©ν–₯에 λ‚˜λž‘ 같은 돌이 μžˆλŠ” 지 확인: μ—†μ–΄μ•Όλœλ‹€.
        bx = x - dx[k]
        by = y - dy[k]
        if not is_in(bx, by) or board[bx][by] != player:
            nx = x + dx[k]
            ny = y + dy[k]
            cnt = 1
            while True:
                if is_in(nx, ny) and board[nx][ny] == player:
                    cnt += 1
                else:
                    break
                nx += dx[k]
                ny += dy[k]
            if cnt == 5:
                return True
    else:
        return False


def main():
    for i in range(LENGTH):
        for j in range(LENGTH):
            if board[i][j] != 0:
                # 였λͺ©μΈμ§€ μ κ²€ν•˜κΈ°
                if is_omok(i, j, board[i][j]):
                    return board[i][j], f'{i + 1} {j + 1}'
    else:
        return 0, 0


winner, pos = main()
if winner != 0:
    print(winner)
    print(pos)
else:
    print(winner)

 

πŸ“•λ¬Έμ œ 확인

좜처: BACKJOON ONLINE JUDGE

 

λ°˜μ‘ν˜•