์šฐ๊ทœ์ด์ธ์šฐ์œค
Eager To Learn ๐ŸŒŒ
์šฐ๊ทœ์ด์ธ์šฐ์œค
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿก ํ™ˆ
  • ๐Ÿš€ ๊นƒํ—ˆ๋ธŒ
  • โ›… ํƒœ๊ทธ ํด๋ผ์šฐ๋“œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (217)
    • ๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS (170)
      • JAVA (82)
      • MYSQL (1)
      • Docker (2)
      • PYTHON (24)
      • LeetCode 150 (39)
      • Algorithm ๊ธฐ๋ฒ• (1)
      • ๋ฐ”ํ‚น๋… (21)
    • ๋ธ”๋กœ๊ทธ ์ด์‚ฌ (0)
    • Error (1)
    • CS (15)
      • DataBase (2)
      • OS (7)
      • Network (1)
      • Spring (1)
      • ์ž๋ฃŒ๊ตฌ์กฐ (3)
      • Java (1)
    • Learned (7)
      • Spring (7)
    • ๊ฐœ๋ฐœ์„œ์  (15)
      • ๊ฐ€์ƒ ๋ฉด์ ‘ ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๊ธฐ์ดˆ (1)
      • ์˜ค๋ธŒ์ ํŠธ - ์กฐ์˜ํ˜ธ (7)
      • ์นœ์ ˆํ•œ SQL ํŠœ๋‹ (7)
    • ํšŒ๊ณ  (2)
hELLO ยท Designed By ์ •์ƒ์šฐ.
์šฐ๊ทœ์ด์ธ์šฐ์œค

Eager To Learn ๐ŸŒŒ

๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS/PYTHON

[ํŒŒ์ด์ฌ PYTHON] ๋ฐฑ์ค€ 15684๋ฒˆ ใ€์‚ฌ๋‹ค๋ฆฌ ์กฐ์ž‘ใ€‘

2023. 3. 7. 11:24


import sys

# ์˜ˆ์ œ ์ž…๋ ฅ
N, M, H = map(int, sys.stdin.readline().split())
ladders = [list(map(int, sys.stdin.readline().split())) for _ in range(M)]
_map = [[0] * N for _ in range(H)]

# ์‚ฌ๋‹ค๋ฆฌ ์ •๋ณด ์ €์žฅ
# ์™ผ์ชฝ์€ 1 ์˜ค๋ฅธ์ชฝ์€ -1๋กœ ์ €์žฅ
for ladder in ladders:
    ladderR = ladder[0] - 1
    ladderC = ladder[1] - 1
    _map[ladderR][ladderC] = 1
    _map[ladderR][ladderC + 1] = -1


# ๋ชจ๋“  i๋ฒˆ ๊ฒฐ๊ณผ๊ฐ€ i๋ฒˆ ์ธ๊ฐ€?
def isEqual():
    for i in range(N):
        location = i
        for step in range(H):
            if _map[step][location] == 1:
                location += 1
            elif _map[step][location] == -1:
                location -= 1
        if location != i:
            return False
    return True


plusNum = 0
ans = 4


def bt():
    global plusNum
    global ans

    if plusNum < ans and isEqual():
        ans = plusNum
        return
    if plusNum == 3:
        return

    for i in range(H):
        for j in range(N - 1):
            if abs(_map[i][j]) == 1 or abs(_map[i][j + 1]) == 1:
                continue
            _map[i][j] = 1
            _map[i][j + 1] = -1
            plusNum += 1
            bt()
            _map[i][j] = 0
            _map[i][j + 1] = 0
            plusNum -= 1


bt()
print(-1) if ans == 4 else print(ans)

 

๋ฌธ์ œ ์ ‘๊ทผ ๋ฐฉ๋ฒ•

1. ์„ธ๋กœ์„ ์ด N๊ฐœ ์ด๊ณ  ๊ฐ€๋กœ์„ ์„ ๋†“์„ ์ˆ˜ ์žˆ๋Š” ๊ฐฏ์ˆ˜๋Š” H์ด๋ฏ€๋กœ N*H ํฌ๊ธฐ์˜ 2์ฐจ์› ๋ฐฐ์—ด์„ _map์œผ๋กœ ์‚ฌ์šฉ

2. ๋ฐฑํŠธ๋ž˜ํ‚น์„ ์ด์šฉํ•ด์„œ ์‚ฌ๋‹ค๋ฆฌ๋ฅผ ๋†“์„ ์ˆ˜ ์žˆ๋Š” ๊ณณ์— ๋„ฃ์–ด๋ณด๊ณ  isEqual() ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด์„œ i๋ฒˆ์—์„œ ์ถœ๋ฐœํ•œ ๊ฒƒ์ด i๋ฒˆ์— ๋„์ฐฉํ•˜๋Š”์ง€ ํ™•์ธ

3. ์‚ฌ๋‹ค๋ฆฌ ์œ„์น˜ ์ €์žฅ ์‹œ, ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ฐ€๋Š” ๊ฒƒ์€ 1, ์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ์œผ๋กœ ๊ฐ€์•ผํ•˜๋Š” ๊ฒƒ์€ -1๋กœ ์ €์žฅํ–ˆ๋‹ค. ๋”ฐ๋ผ์„œ 1์„ ๋งŒ๋‚˜๋ฉด ์ถœ๋ฐœ ์œ„์น˜(i) ์—์„œ +1 ํ•ด์•ผํ•˜๊ณ  -1์„ ๋งŒ๋‚˜๋ฉด -1์„ ํ•œ๋‹ค.

4. ์‚ฌ๋‹ค๋ฆฌ๋Š” ์—ฐ์†ํ•ด์„œ ๋†“์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฑํŠธ๋ž˜ํ‚น ์‹œ ์กฐ๊ฑด๋ฌธ ํ™œ์šฉ

5. ๋ฐฑํŠธ๋ž˜ํ‚น ๋‚ด, ์กฐ๊ฑด๋ฌธ์„ ์ž˜ ํ™œ์šฉํ•ด์•ผ ์‹œ๊ฐ„์ดˆ๊ณผ๋ฅผ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค.

     5.1 ์‚ฌ๋‹ค๋ฆฌ ๊ฐฏ์ˆ˜๊ฐ€ isEqual() ํ•จ์ˆ˜๋ฅผ ์ง€๋‚˜์ณค๋Š”๋ฐ 3๊ฐœ๋ผ๋ฉด ์‚ฌ๋‹ค๋ฆฌ ๊ฐฏ์ˆ˜๊ฐ€ 4๊ฐœ ์ด์ƒ์ด ๋ฌด์กฐ๊ฑด ํ•„์š”ํ•˜๋‹ค๋Š” ์˜๋ฏธ์ด๋ฏ€๋กœ ๋” ๋กœ์ง์„ ๋Œ๋ฆด ํ•„์š”๊ฐ€ ์—†๋‹ค. ( ๋ฌธ์ œ ์กฐ๊ฑด์—์„œ 3๊ฐœ๋ณด๋‹ค ํฌ๋ฉด -1์„ ์ถœ๋ ฅํ•˜๋ผ๊ณ  ํ–ˆ์œผ๋ฏ€๋กœ) 

     5.2 ์•ž์„œ ๋จผ์ € isEqual()์„ ๋งŒ์กฑํ•ด์„œ ๊ฐฑ์‹ ๋œ ์‚ฌ๋‹ค๋ฆฌ์˜ ๊ฐฏ์ˆ˜์ธ ans๋ณด๋‹ค ์ž‘์€ ๊ฒฝ์šฐ์—๋งŒ isEqual() ํ•จ์ˆ˜๋กœ ํ™•์ธํ•ด๋ณธ๋‹ค.

    '๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS/PYTHON' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [ํŒŒ์ด์ฌ PYTHON] ๋ฐฑ์ค€ 14502๋ฒˆ ใ€์—ฐ๊ตฌ์†Œใ€‘
    • [ํŒŒ์ด์ฌ PYTHON] ๋ฐฑ์ค€ 15686๋ฒˆ ใ€์น˜ํ‚จ ๋ฐฐ๋‹ฌใ€‘
    • [ํŒŒ์ด์ฌ PYTHON] ์ฝ”๋“œํฌ์Šค 1426D
    • [ํŒŒ์ด์ฌ PYTHON] ๋ฐฑ์ค€ 3190๋ฒˆ ใ€๋ฑ€ใ€‘
    ์šฐ๊ทœ์ด์ธ์šฐ์œค
    ์šฐ๊ทœ์ด์ธ์šฐ์œค
    ๊ฐœ๋ฐœ์ž ๊ฟˆ๋‚˜๋ฌด

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”