-
[๋ฐฑ์ค] 14890 ๊ฒฝ์ฌ๋ก with PythonPS 2022. 6. 29. 22:45728x90๋ฐ์ํ
๐ BOJ 14890 ๊ฒฝ์ฌ๋ก
๐ก ์กฐ๊ฑด
- ํฌ๊ธฐ๊ฐ NรN์ธ ์ง๋๊ฐ ์๋ค. ์ง๋์ ๊ฐ ์นธ์๋ ๊ทธ ๊ณณ์ ๋์ด๊ฐ ์ ํ์ ธ ์๋ค.
์ค๋์ ์ด ์ง๋์์ ์ง๋๊ฐ ์ ์๋ ๊ธธ์ด ๋ช ๊ฐ ์๋์ง ์์๋ณด๋ ค๊ณ ํ๋ค.
๊ธธ์ด๋ ํ ํ ๋๋ ํ ์ด ์ ๋ถ๋ฅผ ๋ํ๋ด๋ฉฐ, ํ์ชฝ ๋์์ ๋ค๋ฅธ์ชฝ ๋๊น์ง ์ง๋๊ฐ๋ ๊ฒ์ด๋ค.
- ๊ธธ์ ์ง๋๊ฐ ์ ์์ผ๋ ค๋ฉด ๊ธธ์ ์ํ ๋ชจ๋ ์นธ์ ๋์ด๊ฐ ๋ชจ๋ ๊ฐ์์ผ ํ๋ค.
๋๋, ๊ฒฝ์ฌ๋ก๋ฅผ ๋์์ ์ง๋๊ฐ ์ ์๋ ๊ธธ์ ๋ง๋ค ์ ์๋ค.
๊ฒฝ์ฌ๋ก๋ ๋์ด๊ฐ ํญ์ 1์ด๋ฉฐ, ๊ธธ์ด๋ L์ด๋ค.
๋, ๊ฐ์๋ ๋งค์ฐ ๋ง์ ๋ถ์กฑํ ์ผ์ด ์๋ค. ๊ฒฝ์ฌ๋ก๋ ๋ฎ์ ์นธ๊ณผ ๋์ ์นธ์ ์ฐ๊ฒฐํ๋ฉฐ, ์๋์ ๊ฐ์ ์กฐ๊ฑด์ ๋ง์กฑํด์ผํ๋ค.- 1.๊ฒฝ์ฌ๋ก๋ ๋ฎ์ ์นธ์ ๋์ผ๋ฉฐ, L๊ฐ์ ์ฐ์๋ ์นธ์ ๊ฒฝ์ฌ๋ก์ ๋ฐ๋ฅ์ด ๋ชจ๋ ์ ํด์ผ ํ๋ค.
- 2.๋ฎ์ ์นธ๊ณผ ๋์ ์นธ์ ๋์ด ์ฐจ์ด๋ 1์ด์ด์ผ ํ๋ค.
- 3.๊ฒฝ์ฌ๋ก๋ฅผ ๋์ ๋ฎ์ ์นธ์ ๋์ด๋ ๋ชจ๋ ๊ฐ์์ผ ํ๊ณ , L๊ฐ์ ์นธ์ด ์ฐ์๋์ด ์์ด์ผ ํ๋ค.
- ์๋์ ๊ฐ์ ๊ฒฝ์ฐ์๋ ๊ฒฝ์ฌ๋ก๋ฅผ ๋์ ์ ์๋ค.
- 1.๊ฒฝ์ฌ๋ก๋ฅผ ๋์ ๊ณณ์ ๋ ๊ฒฝ์ฌ๋ก๋ฅผ ๋๋ ๊ฒฝ์ฐ
- 2.๋ฎ์ ์นธ๊ณผ ๋์ ์นธ์ ๋์ด ์ฐจ์ด๊ฐ 1์ด ์๋ ๊ฒฝ์ฐ
- 3.๋ฎ์ ์ง์ ์ ์นธ์ ๋์ด๊ฐ ๋ชจ๋ ๊ฐ์ง ์๊ฑฐ๋, L๊ฐ๊ฐ ์ฐ์๋์ง ์์ ๊ฒฝ์ฐ
- 4.๊ฒฝ์ฌ๋ก๋ฅผ ๋๋ค๊ฐ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ ๊ฒฝ์ฐ
- ์ง๋๊ฐ ์ฃผ์ด์ก์ ๋, ์ง๋๊ฐ ์ ์๋ ๊ธธ์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์
- ์ฒซ์งธ ์ค์ N (2 โค N โค 100)๊ณผ L (1 โค L โค N)์ด ์ฃผ์ด์ง๋ค.
๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ์ง๋๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ์นธ์ ๋์ด๋ 10๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค.
- ๊ตฌํ ์ ํ์ ๋ฌธ์
๐ฅ ์์ค ์ฝ๋
from sys import stdin n, l = map(int, stdin.readline().split()) arr = [] for _ in range(n): arr.append(list(map(int, stdin.readline().split()))) cnt = 0 def check(li): sw = [False for _ in range(n)] for i in range(n - 1): if li[i] == li[i + 1]: continue if abs(li[i] - li[i + 1]) > 1: return False if li[i] > li[i + 1]: temp = li[i + 1] for j in range(i + 1, i + 1 + l): if 0 <= j < n: if li[j] != temp: return False if sw[j]: return False sw[j] = True else: return False else: temp = li[i] for j in range(i, i - l, -1): if 0 <= j < n: if li[j] != temp: return False if sw[j]: return False sw[j] = True else: return False return True for i in arr: if check(i): cnt += 1 for i in range(n): temp = [] for j in range(n): temp.append(arr[j][i]) if check(temp): cnt += 1 print(cnt)
๐ ์์ ๋ฐ ์คํ๊ฒฐ๊ณผ
์์
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
์คํ๊ฒฐ๊ณผ
7
โจ๏ธ ๋ฌธ์ ํ์ด
- ๊ฐ๋ก, ์ธ๋ก์ถ์ ๊ฒ์ฌํด์ ๋ด๋ฆฌ๋ง๊ธธ์ ์ค์นํด์ ์ด๋์ด ๊ฐ๋ฅํ ๊ธธ์ธ์ง ์ดํด๋ณด๋ ๋ฌธ์ ์ด๋ค.
๋ฌธ์ ๋ฅผ ํ์ดํ ๋ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๊ฒฝ์ฌ๋ก๋ฅผ ์ค์นํด์ ์ด๋์ด ๊ฐ๋ฅํ์ง๋ฅผ ์์๋ณด๋ ๊ฒ์ด๋ค.
์ด๋ฅผ ์์๋ณด๊ธฐ ์ํด์ check ๋ผ๋ ํจ์๋ฅผ ํตํด ํ๋ณํ๋ค.
- ๊ฒฝ์ฌ๋ก๋ฅผ ์ค์นํ ์ ์๋ ์กฐ๊ฑด์ ๋ฌธ์ ์ ์ ์๋์ด ์์ง๋ง ์๋์ ๊ฐ์ด ๋ค์ ์ ๋ฆฌํ ์ ์๋ค.
- 1.๊ฒฝ์ฌ๋ก๋ ์ ๋ ฅ๋ฐ์ L๊ฐ์ ์ฐ์๋ ๊ณต๊ฐ์ ์ค์นํ ์ ์๋ค.
- 2.๋ฎ์ ์นธ๊ณผ ๋์ ์นธ์ ๋์ด ์ฐจ์ด๋ 1์ด์ด์ผ ๊ฒฝ์ฌ๋ก๋ฅผ ์ค์นํ ์ ์๋ค.
- 3.๊ฐ์ ๋์ด์ L๊ฐ์ ์ฐ์๋ ์นธ์ ๊ฒฝ์ฌ๋ก๋ฅผ ์ค์นํ ์ ์๋ค.
- 4.๊ฒฝ์ฌ๋ก๋ฅผ ๋์ ๊ณณ์๋ ๋ค์ ๊ฒฝ์ฌ๋ก๋ฅผ ๋์ ์ ์๋ค.
- 5.๊ฒฝ์ฌ๋ก๋ฅผ ๋๋ ๊ณณ์ด ๋ฒ์๋ฅผ ๋ฒ์ด๋ ์ ์๋ค.
- (2)๋ฒ์ ๊ธฐ์ฌ๋ ์์ฝ๋ ๋ค์ฏ๊ฐ์ง์ ์กฐ๊ฑด ์ค ๋ค๋ฒ์งธ๋ฅผ ๋ณด๋ฉด ์ฐ๋ฆฌ๋ ๊ฒฝ์ฌ๋ก๋ฅผ ์ค์นํ ๊ณณ์ ํ์ํ์ฌ ๊ด๋ฆฌํ ๋ฐฐ์ด์ด ํ์ํ๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
์ด๋ฅผ ์์ค์ฝ๋์์ check ํจ์ ๋ด๋ถ์ sw ๋ผ๋ ๋ฆฌ์คํธ๋ก n ๊ฐ๋งํผ False ๋ก ์ด๊ธฐํํ์ฌ ๋ง๋ค์ด๋์๋ค.
- ๊ฐ ๋์ด๋ฅผ ์ ๋ ฅ๋ฐ์ arr์ ํ๊ธฐ์ค์ผ๋ก ํ์ค์ฉ ์ํํ๋ฉด์ check ํจ์๋ฅผ ํตํด ์ง๋๊ฐ ์ ์๋ ๊ธธ์ธ์ง ํ์ธํ๋ค.
- arr ๋ฆฌ์คํธ์ i ๋ฒ์งธ ๋ฆฌ์คํธ๋ฅผ ์ํํ๋ฉด์ ํ์ฌ ์ํํ๊ณ ์๋ ๋์ด(li[i])๊ฐ
๊ทธ ๋ค์ ๋ธ๋ญ์ ๋์ด(li[i + 1])์ ๊ฐ๋ค๋ฉด continue๋ฅผ ํด์ค๋ค.
๋ง์ฝ arr ๋ฆฌ์คํธ์ i ๋ฒ์งธ ๋ฆฌ์คํธ๋ฅผ ์ํํ๋ฉด์ ํ์ฌ ์ํํ๊ณ ์๋ ๋์ด (li[i])์
๊ทธ ๋ค์ ๋ธ๋ญ์ ๋์ด(li[i + 1])์ ์ฐจ์ด๊ฐ 1๋ณด๋ค ํฌ๋ค๋ฉด return False(2)๋ฒ ์ 2๋ฒ ์กฐ๊ฑด์ ์๋ฐฐ
(6)๋ฒ์์๋ ๋ฌด์ฌํ False๋ฅผ return ํ์ง ์์๋ค๋ฉด, ๊ฒฝ์ฌ๋ก๋ฅผ ์ค์นํ๋ค.
์ฌ๊ธฐ์ ํ์ฌ ์ํํ๊ณ ์๋ i ๋ฒ์งธ ๋ธ๋ญ์ด i + 1 ๋ฒ์งธ ๋ธ๋ญ๋ณด๋ค ํฌ๋ค๋ฉด i + 1 ๋ฒ์งธ ๋ธ๋ญ๋ถํฐ i + 1 + L ๋ฒ์งธ ๋ธ๋ญ๊น์ง ๊ฒ์ฌํด์ผํ๋ค.
์ด๋ (2)๋ฒ์ 3๋ฒ ์กฐ๊ฑด์ ์๋ฐฐ๋๋์ง, (2)๋ฒ์ 4๋ฒ ์กฐ๊ฑด์ ์๋ฐฐ๋๋์ง ๊ฒ์ฌํ๋ค.
- ๋๋ ํ์ฌ ์ํํ๊ณ ์๋ i ๋ฒ์งธ ๋ธ๋ญ์ด i + 1 ๋ฒ์งธ ๋ธ๋ญ๋ณด๋ค ์๋ค๋ฉด i ๋ฒ์งธ ๋ธ๋ญ๋ถํฐ i - L ๋ฒ์งธ ๋ธ๋ญ๊น์ง ๊ฒ์ฌํด์ผํ๋ค.
์ด๋ (2)๋ฒ์ 3๋ฒ ์กฐ๊ฑด์ ์๋ฐฐ๋๋์ง, (2)๋ฒ์ 4๋ฒ ์กฐ๊ฑด์ ์๋ฐฐ๋๋์ง ๊ฒ์ฌํ๋ค.
- (7)๋ฒ ํน์ (8)๋ฒ์์ ๊ฐ๊ฐ ์กฐ๊ฑด์ ์๋ฐฐ๋๋ค๋ฉด, return False
์๋ฐฐ๋์ง ์๋๋ค๋ฉด sw ๋ฆฌ์คํธ์ True๋ฅผ ๊ธฐ์ฌํ์ฌ ๊ฒฝ์ฌ๋ก ์ค์น ์ ๋ฌด๋ฅผ ์ ์ฅํ๋ค.
- check ํจ์๋ก๋ถํฐ ๋ฐํ๋ฐ์ True or False ๊ฐ์ ๋ฐ๋ผ cnt ๋ฅผ 1์ฉ ๋๋ ค์ค๋ค.
- ์ธ๋ก ๊ฒ์ฌ๋ ๋ฐ๋ก temp ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค์ด ๊ฐ ์ด์ ์ํํ์ฌ ์ ์ฅํ ํ, check ํจ์์ ๋๊ฒจ์ฃผ๊ณ ๊ฒ์ฌํ๋ฉด ๋๋ค.
๋ฐ์ํ'PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 16956 ๋๋์ ์ with Python (0) 2022.07.02 [๋ฐฑ์ค] 12920 ํ๋ฒํ ๋ฐฐ๋ญ 2 with Python (0) 2022.07.01 [๋ฐฑ์ค] 9996 ํ๊ตญ์ด ๊ทธ๋ฆฌ์ธ ๋ ์๋ฒ์ ์ ์ํ์ง with Python (0) 2022.06.29 [๋ฐฑ์ค] 6236 ์ฉ๋ ๊ด๋ฆฌ with Python (0) 2022.06.17 [๋ฐฑ์ค] 2225 ํฉ๋ถํด with Python (0) 2022.06.17 - ํฌ๊ธฐ๊ฐ NรN์ธ ์ง๋๊ฐ ์๋ค. ์ง๋์ ๊ฐ ์นธ์๋ ๊ทธ ๊ณณ์ ๋์ด๊ฐ ์ ํ์ ธ ์๋ค.