🐣 사다리 타기 🔄
1. 문제 링크
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.