๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?
[BAEKJOON python] 14890_ ๊ฒฝ์ฌ๋ก ๋ณธ๋ฌธ
728x90
๋ฐ์ํ
ํฌ๊ธฐ๊ฐ N×N์ธ ์ง๋๊ฐ ์๋ค. ์ง๋์ ๊ฐ ์นธ์๋ ๊ทธ ๊ณณ์ ๋์ด๊ฐ ์ ํ์ ธ ์๋ค.
์ค๋์ ์ด ์ง๋์์ ์ง๋๊ฐ ์ ์๋ ๊ธธ์ด ๋ช ๊ฐ ์๋์ง ์์๋ณด๋ ค๊ณ ํ๋ค.
๊ธธ์ด๋ ํ ํ ๋๋ ํ ์ด ์ ๋ถ๋ฅผ ๋ํ๋ด๋ฉฐ, ํ์ชฝ ๋์์ ๋ค๋ฅธ์ชฝ ๋๊น์ง ์ง๋๊ฐ๋ ๊ฒ
๊ธธ์ ์ง๋๊ฐ ์ ์์ผ๋ ค๋ฉด ๊ธธ์ ์ํ ๋ชจ๋ ์นธ์ ๋์ด๊ฐ ๋ชจ๋ ๊ฐ์์ผ ํ๋ค.
๊ฒฝ์ฌ๋ก๋ฅผ ๋์์ ์ง๋๊ฐ ์ ์๋ ๊ธธ์ ๋ง๋ค ์ ์๋ค.
๊ฒฝ์ฌ๋ก๋ ๋์ด๊ฐ ํญ์ 1์ด๋ฉฐ, ๊ธธ์ด๋ L์ด๋ค.
๊ฐ์๋ ๋งค์ฐ ๋ง์ ๋ถ์กฑํ ์ผ์ด ์๋ค. ๊ฒฝ์ฌ๋ก๋ ๋ฎ์ ์นธ๊ณผ ๋์ ์นธ์ ์ฐ๊ฒฐํ๋ฉฐ, ์๋์ ๊ฐ์ ์กฐ๊ฑด์ ๋ง์กฑ
๊ฒฝ์ฌ๋ก๋ ๋ฎ์ ์นธ์ ๋์ผ๋ฉฐ, L๊ฐ์ ์ฐ์๋ ์นธ์ ๊ฒฝ์ฌ๋ก์ ๋ฐ๋ฅ์ด ๋ชจ๋ ์ ํด์ผ ํ๋ค.
๋ฎ์ ์นธ๊ณผ ๋์ ์นธ์ ๋์ด ์ฐจ์ด๋ 1์ด์ด์ผ ํ๋ค.
๊ฒฝ์ฌ๋ก๋ฅผ ๋์ ๋ฎ์ ์นธ์ ๋์ด๋ ๋ชจ๋ ๊ฐ์์ผ ํ๊ณ , L๊ฐ์ ์นธ์ด ์ฐ์๋์ด ์์ด์ผ ํ๋ค
์๋์ ๊ฐ์ ๊ฒฝ์ฐ์๋ ๊ฒฝ์ฌ๋ก๋ฅผ ๋์ ์ ์๋ค.
๊ฒฝ์ฌ๋ก๋ฅผ ๋์ ๊ณณ์ ๋ ๊ฒฝ์ฌ๋ก๋ฅผ ๋๋ ๊ฒฝ์ฐ
๋ฎ์ ์นธ๊ณผ ๋์ ์นธ์ ๋์ด ์ฐจ์ด๊ฐ 1์ด ์๋ ๊ฒฝ์ฐ
๋ฎ์ ์ง์ ์ ์นธ์ ๋์ด๊ฐ ๋ชจ๋ ๊ฐ์ง ์๊ฑฐ๋, L๊ฐ๊ฐ ์ฐ์๋์ง ์์ ๊ฒฝ์ฐ
๊ฒฝ์ฌ๋ก๋ฅผ ๋๋ค๊ฐ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ ๊ฒฝ์ฐ
์ง๋๊ฐ ์ฃผ์ด์ก์ ๋, ์ง๋๊ฐ ์ ์๋ ๊ธธ์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑ
์ฒซ์งธ ์ค์ N (2 ≤ N ≤ 100)๊ณผ L (1 ≤ L ≤ N)์ด ์ฃผ์ด์ง๋ค.
๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ์ง๋๊ฐ ์ฃผ์ด์ง๋ค.
๊ฐ ์นธ์ ๋์ด๋ 10๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค.
์ฒซ์งธ ์ค์ ์ง๋๊ฐ ์ ์๋ ๊ธธ์ ๊ฐ์๋ฅผ ์ถ๋ ฅ
# ๋ฐฐ์ด ๊ธธ์ด, ๊ฒฝ์ฌ๋ก ๊ธธ์ด
N, L = map(int, input().split())
graph = []
for i in range(N) :
graph.append(list(map(int, input().split())))
case = [] # ์ง๋ ์ ์๋ ๊ธธ์ ๊ฒฝ์ฐ๋ค
count = 0 # ๊ฐ๋ฅํ ๊ธธ
def check(l) :
pre = l.pop() # ์ด์ ๋
๋์ด
extra = [pre] # ๊ฒฝ์ฌ๋ก ๋์ ์ ์๋ ์ฌ๋ถ ๋
while l : # ๋ค์ ๋
์ด ๋จ์ ์๋ค๋ฉด
next = l.pop()
if pre == next : # ์ด์ ๋
๊ณผ ๋์ด ๊ฐ์.
extra.append(next)
elif pre == next - 1 : # ํ์ฌ๊ฐ ์ด์ ๋ณด๋ค ํ์นธ ๋์
# ๊ฒฝ์ฌ๋ก ๊ธธ์ด๋งํผ ์ด์ ๋
์ด ๊ฐ์๊ฐ ์์ด์ผ๋จ
for k in range(L) :
if len(extra) < L : # ์ ๋ค๋ฉด xx
return False
extra.clear() # ์ด์ ๋
์ด์ ๋ถ๊ฐ
extra.append(next) # ๋ค์๋
๋ฃ๊ธฐ
elif pre == next + 1 : # ํ์ฌ๊ฐ ์ด์ ๋ณด๋ค ํ์นธ ๋ฎ์
for k in range(L - 1) :
if not l or l.pop() != next : # ๊ฒฝ์ฌ๋ ๊ธธ์ด๋ณด๋ค ์ ๊ณ , ๋ชจ๋ ๋์ด๊ฐ ๋ค๋ฅด๋ค๋ฉด
return False
extra.clear()
else :
return False
pre = next
return True
for i in range(N) :
cardi = [] # ์ด
for j in range(N) :
cardi.append(graph[j][i])
case.append(graph[i][:]) # ํ
case.append(cardi[:])
# ํ์ด, ํ์ด, ํ์ด~~~~
# print(case)
# ๊ฒฝ์ฌ๋ก ์ด์ฉํด์ ๊ฐ๋ฅํ์ง~ ํ์ธ
for i in case :
if check(i) :
count += 1
print(count)
# input
# 6 2
# 3 2 1 1 2 3
# 3 2 2 1 2 3
# 3 2 2 2 3 3
# 3 3 3 3 3 3
# 3 3 3 3 2 2
# 3 3 3 3 2 2
# output
# 7
728x90
๋ฐ์ํ
'๐ฆฅ ์ฝํ > BAEKJOON' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BAEKJOON python] 15683_๊ฐ์ (0) | 2022.10.13 |
---|---|
[BAEKJOON python] 14891_ํฑ๋๋ฐํด (0) | 2022.10.13 |
[BAEKJOON python] 14503_๋ก๋ด ์ฒญ์๊ธฐ (1) | 2022.10.11 |
[BAEKJOON python] 14502_์ฐ๊ตฌ์ (0) | 2022.10.10 |
[BAEKJOON python] 14500_ํ ํธ๋ก๋ฏธ๋ ธ (0) | 2022.10.10 |
Comments