deo2kim
λ§žμ™œν‹€
deo2kim
전체 방문자
였늘
μ–΄μ œ
  • λΆ„λ₯˜ 전체보기
    • CS
      • Algorithm
      • Data Structure
      • Network
      • DB
      • OS
    • Algorithm Problem
      • Python
      • JavaScript
    • Programming language
      • Python
      • JavaScript
    • Tool
      • Jquery
      • React
    • 개발
    • Infra

λΈ”λ‘œκ·Έ 메뉴

  • ν™ˆ
  • νƒœκ·Έ
  • λ°©λͺ…둝

곡지사항

인기 κΈ€

졜근 λŒ“κΈ€

졜근 κΈ€

ν‹°μŠ€ν† λ¦¬

λ°˜μ‘ν˜•
hELLO Β· Designed By μ •μƒμš°.
deo2kim

λ§žμ™œν‹€

[python] λ°±μ€€ - 2615. 였λͺ©
Algorithm Problem/Python

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

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

 

λ°˜μ‘ν˜•
μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ λ³€κ²½κΈˆμ§€ (μƒˆμ°½μ—΄λ¦Ό)

'Algorithm Problem > Python' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[python] λ°±μ€€ - 1105. νŒ”  (0) 2021.09.05
[python] λ°±μ€€ - 13023. ABCDE  (0) 2021.09.04
[python] λ°±μ€€ - 1052. 물병  (0) 2021.09.02
[python] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ - 이진 λ³€ν™˜ λ°˜λ³΅ν•˜κΈ°(μ›”κ°„ μ½”λ“œ μ±Œλ¦°μ§€ μ‹œμ¦Œ1)  (0) 2021.09.01
[python] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ - 닀단계 칫솔 판맀(2021 Dev-Matching: μ›Ή λ°±μ—”λ“œ 개발자(μƒλ°˜κΈ°))  (0) 2021.08.23
    'Algorithm Problem/Python' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • [python] λ°±μ€€ - 1105. νŒ”
    • [python] λ°±μ€€ - 13023. ABCDE
    • [python] λ°±μ€€ - 1052. 물병
    • [python] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ - 이진 λ³€ν™˜ λ°˜λ³΅ν•˜κΈ°(μ›”κ°„ μ½”λ“œ μ±Œλ¦°μ§€ μ‹œμ¦Œ1)
    deo2kim
    deo2kim
    μ½”λ”© κΈ°λ‘ν•˜κΈ°

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”