๐น ์ฌ๋ค๋ฆฌ ํ๊ธฐ
1. ๋ฌธ์ ๋งํฌ
2. ์ฝ๋
Python3
31256KB
84ms
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
61
62
63
64
65
66
67
68
69
70
71
72
k = int(input())
n = int(input())
alpha = [chr(65 + i) for i in range(k)]
start_order = list(' '.join(alpha))
final_order = list(' '.join(list(input())))
h_len = len(start_order)
ladder = []
ladder.append(start_order)
for i in range(n):
line = list(input())
line = list(' ' + ' '.join(line) + ' ')
if '?' in line:
hidden = i + 1 # ๋ฌผ์ํ ๊ฐ๋ก์ค ์์น
ladder.append(line)
ladder.append(final_order)
final_idx = []
for a in final_order:
final_idx.append(start_order.index(a))
# ๊ฐ์ ์ํ๋ฒณ ๋ฌผ์ํ์์ ๋ง๋์ ๊ธธ์ฐพ๊ธฐ
def connect_road(idx):
sx, sy = 0, idx
ex, ey = n+1, final_idx.index(idx)
# ์์์ ๋ฌผ์ํ๊น์ง ๋ด๋ ค๊ฐ๊ธฐ
while sx != hidden:
sx += 1
# ๋ฌผ์ํ ๋ผ์ธ ๋์ฐฉ์ ์์ง์ด์ง ์๋๋ก ํจ
if sx == hidden:
break
# ์ผ์ชฝ์ ๋ง๋๊ธฐ ์์ ์ ์ผ์ชฝ์ผ๋ก ์ด๋
if 0 < sy - 1 and ladder[sx][sy - 1] == '-':
sy -= 2
# ์ค๋ฅธ์ชฝ์ ๋ง๋๊ธฐ ์์ ์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋
elif sy + 1 < h_len and ladder[sx][sy + 1] == '-':
sy += 2
# ๋ฐ์์ ๋ฌผ์ํ๊น์ง ์ฌ๋ผ๊ฐ๊ธฐ
while ex != hidden:
ex -= 1
# ๋ฌผ์ํ ๋ผ์ธ ๋์ฐฉ์ ์์ง์ด์ง ์๋๋ก ํจ
if ex == hidden:
break
# ์ผ์ชฝ์ ๋ง๋๊ธฐ ์์ ์ ์ผ์ชฝ์ผ๋ก ์ด๋
if 0 < ey - 1 and ladder[ex][ey - 1] == '-':
ey -= 2
# ์ค๋ฅธ์ชฝ์ ๋ง๋๊ธฐ ์์ ์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋
elif ey + 1 < h_len and ladder[ex][ey + 1] == '-':
ey += 2
# ๊ฐ๋ก ๊ธธ์ด ์ฐจ์ด๊ฐ 3์ด์ ๋ ๊ฒฝ์ฐ(์ค์ ๋ก๋ ๊ฐ๋ก ํ ์นธ ์ฐจ์ด๋ณด๋ค ํด ๊ฒฝ์ฐ)
if abs(sy - ey) > 2:
return False # ์ฌ๋ค๋ฆฌ ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ
# ๋ค๋ฆฌ๋ฅผ ์๋๋ ๋ง๋๋ ๊ฒฝ์ฐ
if sy == ey:
return True
# ๋ค๋ฆฌ ๋๊ธฐ(์ค๋ณต์ผ๋ก ๋๊ธฐ ๊ฐ๋ฅ)
ladder[hidden][max(sy, ey)-1] = '-'
return True
fail = False
for i in range(h_len):
if start_order[i] == ' ':
continue
# ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ
if not connect_road(i):
print('x' * (k-1))
fail = True
break
if not fail:
print(''.join(ladder[hidden]).replace(' ', '').replace('?', '*'))
3. ํด์ค
1
2
3
4
5
6
7
A B C D E F G H I J
* - * * * - * * *
- * - * * * * * *
? ? ? ? ? ? ? ? ?
- * * - * * * - *
* * - * - * - * -
A C G B E D J F I H
์์ฒ๋ผ ์์์ ๊ณผ ๋น์นธ์ด ์๋ ์ฌ๋ค๋ฆฌ ๋ชจ์์ ๋ง๋ ๋ค.
๊ฐ์ ์ํ๋ฒณ์ ์์ ์์น์ ๋ ์์น์ ์ธ๋ฑ์ค๋ฅผ ?
์ ์์น๋ก ์ฌ๋ค๋ฆฌ๋ฅผ ํ๋ฉด์ ์ฎ๊ธด ํ
- ๋ฐ๋ก ๋ง๋๋ฉด(์ธ๋ฑ์ค๊ฐ ๋๊ฐ์ผ๋ฉด) ๋ค๋ฆฌ๋ฅผ ๋์ง ์๊ณ
- ๊ฐ๋ก๋ก 2์นธ ์ฐจ์ด๊ฐ ๋ ๋๋ ๊ทธ ์ฌ์ด์ ๋ค๋ฆฌ๋ฅผ ๋๊ณ
- ๊ฐ๋ก๊ฐ 2์นธ๋ณด๋ค ๋ ํฌ๊ฒ ์ฐจ์ด๊ฐ ๋ ๋๋ ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ์(๋ค๋ฆฌ๊ฐ ๊ธธ์ด 1์ด ๋์ผ๋ฉด ์๋๊ธฐ ๋๋ฌธ)
3๋ฒ์ผ ๊ฒฝ์ฐ๋ ๋ฐ๋ก x๋ฅผ k ๊ธธ์ด๋งํผ ์ถ๋ ฅํ๊ณ 2์ ๊ฒฝ์ฐ ๋ค๋ฆฌ๋ฅผ ๋ค ๋์ ํ ?
์๋ฆฌ๋ *
๋ก ๋ณ๊ฒฝํด ์ถ๋ ฅ
This post is licensed under CC BY 4.0 by the author.