-
[๋ฐฑ์ค] 1244 ์ค์์น ์ผ๊ณ ๋๊ธฐ with PythonPS 2021. 10. 17. 21:38728x90๋ฐ์ํ
๐ BOJ 1244 ์ค์์น ์ผ๊ณ ๋๊ธฐ
๐ก ์กฐ๊ฑด ๋ฐ ํ์ด
์ฒซ์งธ ์ค์ ์ค์์น ๊ฐ์.
์ค์์น ๊ฐ์๋ 100 ์ดํ์ธ ์์ ์ ์.
๋์งธ ์ค์ ๊ฐ ์ค์์น์ ์ํ.์ผ์ ธ ์์ผ๋ฉด 1, ๊บผ์ ธ์์ผ๋ฉด 0์ด๋ผ๊ณ ํ์
์ ์งธ ์ค์๋ ํ์ ์.ํ์์๋ 100 ์ดํ์ธ ์์ ์ ์
๋ท์งธ ์ค๋ถํฐ ๋ง์ง๋ง ์ค๊น์ง ํ ์ค์ ํ ํ์์ ์ฑ๋ณ, ํ์์ด ๋ฐ์ ์.๋จํ์์ ์ค์์น ๋ฒํธ๊ฐ ์๊ธฐ๊ฐ ๋ฐ์ ์์ ๋ฐฐ์์ด๋ฉด, ๊ทธ ์ค์์น์ ์ํ๋ฅผ ๋ฐ๊พผ๋ค. ์ฆ, ์ค์์น๊ฐ ์ผ์ ธ ์์ผ๋ฉด ๋๊ณ , ๊บผ์ ธ ์์ผ๋ฉด ์ผ ๋ค.
์ฌํ์์ ์๊ธฐ๊ฐ ๋ฐ์ ์์ ๊ฐ์ ๋ฒํธ๊ฐ ๋ถ์ ์ค์์น๋ฅผ ์ค์ฌ์ผ๋ก ์ข์ฐ๊ฐ ๋์นญ์ด๋ฉด์ ๊ฐ์ฅ ๋ง์ ์ค์์น๋ฅผ ํฌํจํ๋ ๊ตฌ๊ฐ์ ์ฐพ์์,
๊ทธ ๊ตฌ๊ฐ์ ์ํ ์ค์์น์ ์ํ๋ฅผ ๋ชจ๋ ๋ฐ๊พผ๋ค. ์ด๋ ๊ตฌ๊ฐ์ ์ํ ์ค์์น ๊ฐ์๋ ํญ์ ํ์๊ฐ ๋๋ค.๊ตฌํ & ์๋ฎฌ๋ ์ด์ ์ ํ์ ๋ฌธ์
ํ์๋ค์ ์ ๋ ฅ๋๋ ์์๋๋ก ์๊ธฐ์ ์ฑ๋ณ๊ณผ ๋ฐ์ ์์ ๋ฐ๋ผ ์ค์์น์ ์ํ๋ฅผ ๋ฐ๊พธ์์ ๋, ์ค์์น๋ค์ ๋ง์ง๋ง ์ํ๋ฅผ ์ถ๋ ฅํ๋ ๋ฌธ์ .
๐ฅ ์์ค ์ฝ๋
from sys import stdin n = int(stdin.readline()) switch = [0] + list(map(int, stdin.readline().split())) for i in range(int(stdin.readline())): g, num = map(int, stdin.readline().split()) if g == 1: for i in range(num, n + 1, num): switch[i] = 1 if switch[i] == 0 else 0 elif g == 2: if num + 1 > n or num - 1 < 1: switch[num] = 1 if switch[num] == 0 else 0 else: if switch[num + 1] == switch[num - 1]: left = num - 1 right = num + 1 while 1: if left - 1 < 1 or right + 1 > n: break if switch[left - 1] != switch[right + 1]: break else: left -= 1 right += 1 for i in range(left, right + 1): switch[i] = 1 if switch[i] == 0 else 0 else: switch[num] = 1 if switch[num] == 0 else 0 for i in range(1, n, 20): print(*switch[i:i+20])
๐ ์์ ๋ฐ ์คํ๊ฒฐ๊ณผ
์์
8 0 1 0 1 0 0 0 1 2 1 3 2 3
์คํ๊ฒฐ๊ณผ
1 0 0 0 1 1 0 1
โจ๏ธ ๋ฌธ์ ํ์ด
ํ์์ ์๋งํผ ์ํํ์ฌ ๋จ์์ผ ๋์ ์ฌ์์ผ ๋๋ฅผ ๊ตฌ๋ถํ์ฌ ์์ ์ ํ ์ ์๋๋ก ์กฐ๊ฑด๋ฌธ์ ์ง ๋ค.
(๋ด๊ฐ ๋ฌธ์ ๋ฅผ ํธ๋ ๋ฐฉ์์ ์ด๋ฌํ๋ค. ์ด๋ ๊ฒ ํฐ ํ์ ์ง๋๊ณ ๊ตฌํํ๋ฉด ํจ์ฌ ํธํ๋ค.)๋จ์๋ ์ง๋ฌธ์ ๋์ค๋ ๊ฒ์ฒ๋ผ, ์ค์์น์ ์ํ๊ฐ 1์ผ ๋ 0์ผ๋ก, 0์ผ ๋ 1๋ก ๋ณ๊ฒฝํด์ฃผ๋ฉด ๋๋ค.
์ฌ์์ ๊ฒฝ์ฐ, ์ข์ฐ๋ก ๋์นญํ๋์ง ์ฐพ๊ธฐ ์ ์, ํ์ฌ ํ์์ด ๋ฐ์ ์์ 1์ฉ ๋ํ๊ณ ๋นผ์ ์ค์์น๋ก ์ ๋ ฅ๋ฐ์ ๋ฆฌ์คํธ ๋ฒ์ ๋ด์ธ์ง๋ถํฐ ํ์ธํ๋ค.
๋ฒ์ ๋ด์ธ ๊ฒฝ์ฐ, ํ์ฌ ๋ฒํธ์ ์์ชฝ ๋ฐ์ดํฐ๊ฐ ๊ฐ์์ง ํ์ธํ๊ณ , ์ผ์นํ๋ค๋ฉด left, right ๋ณ์์ ์ข์ธก, ์ฐ์ธก์ ์ธ๋ฑ์ค ๋ฒํธ๋ฅผ ๋ฃ์ด์ค๋ค.while ๋ฐ๋ณต๋ฌธ์ผ๋ก ์์ธก์ ๋ฐ์ดํฐ๊ฐ ๊ฐ์ง ์์ ๋, ๋ฆฌ์คํธ์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ ๋ break๋ฅผ ๊ฑธ์ด์ฃผ๊ณ
left์ right๋ฅผ ๊ฐฑ์ ํ๋ค.while ๋ฐ๋ณต์ด ๋๋ ํ, range(left, right + 1) ๋ฒ์์ ๋ฆฌ์คํธ ์์๋ฅผ ๋ณ๊ฒฝํด์ค๋ค.
0 ์ผ๋ 1, 1 ์ผ๋, 020๊ฐ์ฉ ์ถ๋ ฅํ๋ ๊ฒ์ ์๋์ ๊ฐ์ด for ๋ฌธ์์ ์กฐ์ ํด์ฃผ๋ฉด ๋๋ค.
for i in range(1, n, 20): print(*switch[i:i+20])
๐พ ๋๋์
- ์กฐ๊ฑด๋ฌธ๋ง ์ถฉ์คํ ์งํค๋ฉด ์ ํ ์ ์๋ ๋ฌธ์ ์๋ค.
- ์ฌํ์์ด ๋ฐ๊พธ๋ ์ค์์น๋ค์ ์กฐ๊ฑด์ ๊ตฌํํ๋๋ฐ์ ์ด์ง ํ์ด ๋ค๋ปํ๋ค.
- ๋งํฌ๋๋ฆฌ์คํธ๋ก ํ์ ์์ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ ํ๋ค.
- ๋ค์๋ฒ์๋ ๋งํฌ๋ ๋ฆฌ์คํธ๋ก ๊ตฌํํ๋ ์ฐ์ต์ ํด๋ณด์์ผ๊ฒ ๋ค.
๋ฐ์ํ'PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1743 ์์๋ฌผ ํผํ๊ธฐ with Python (0) 2021.10.18 [๋ฐฑ์ค] 1713 ํ๋ณด ์ถ์ฒํ๊ธฐ with Python (0) 2021.10.18 [Programmers] ํ ํธ์ง with Python (0) 2021.10.17 [Programmers] ๊ด๊ณ ์ฝ์ with Python (0) 2021.10.17 [Programmers] ์์ ๊ฒ์ with Python (0) 2021.10.14