Post

🐣 사다리 타기 🔄

1. 문제 링크

2469번: 사다리 타기



2. 코드

Python시간메모리
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import sys

input = sys.stdin.readline
k = int(input())
n = int(input())
fin = list(input().rstrip())
empty_line = 0
ladder = [0] * (k-1)
ans = ''
graph = []
for i in range(n):
    graph.append(list(input().rstrip()))
    if (graph[-1][1] == '?'):
        empty_line = i

# print(empty_line)
for i in range(k):
    now, pin = i, i
    for j in range(n):
        if j == empty_line:
            pin = now
            continue
        if now < k - 1 and graph[j][now] == '-':  # 오른쪽으로 가는 경우
            now += 1
        elif now > 0 and graph[j][now - 1] == '-':
            now -= 1
        # print(now)

    # print('현재 알파벳', ord('A') + i)
    # print('최종 알파벳', ord(fin[now]))
    # print('now', now)
    if ord('A') + i == ord(fin[now]):
        if (pin < k - 1):
            ladder[pin] -= 1
        if (pin > 0):
            ladder[pin - 1] -= 1

    else:
        if (pin < k - 1):
            ladder[pin] += 1
        if (pin > 0):
            ladder[pin - 1] += 1

# print(ladder)
for i in range(k - 1):
    if ladder[i] == 2:
        if i == 0:
            ans += '-'
        elif ans[i - 1] != '-':
            ans += '-'
        elif i < k - 1 and ladder[i + 1] == 2:
            ans += '*'
        else:
            ans = '*' * (k - 1)
            break
    else:
        ans += '*'

print(ans)



3. 해설

  • 테스트 케이스 53% 불통 😭 재도전 예정
This post is licensed under CC BY 4.0 by the author.