๐ ๋ฐฑ์ค 1244 - ์ค์์น ์ผ๊ณ ๋๊ธฐ
๋ฐฑ์ค 1244 - ์ค์์น ์ผ๊ณ ๋๊ธฐ
โก๏ธ ๋์ ํ์ด
๋ฌธ์ ๊ฐ ์กฐ๊ธ ๊ธธ์์ง๋ง, ํต์ฌ ํฌ์ธํธ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- ๋จํ์: ์๊ธฐ๊ฐ ๋ฐ์ ์์ ๋ฐฐ์์ธ ์ค์์น ๋ฒํธ์ ์ํ๋ฅผ ๋ฐ๊พผ๋ค.
- ์ฌํ์: ์๊ธฐ๊ฐ ๋ฐ์ ์์ ๊ฐ์ ๋ฒํธ์ธ ์ค์์น ๋ฒํธ๋ฅผ ์ค์ฌ์ผ๋ก ์ข์ฐ๊ฐ ๋์นญ์ด๋ฉด์ ๊ฐ์ฅ ๋ง์ ์ค์์น๋ฅผ ํฌํจํ๋ ๊ตฌ๊ฐ์ ์ํ๋ฅผ ๋ชจ๋ ๋ณ๊ฒฝํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ฒ์์ index
๋ฅผ ํธํ๊ฒ ๋ณด๊ธฐ ์ํด arr[0]
์ ์ด ๋ฌธ์ ์ ๊ด๋ จ ์๋ ๊ฐ์ธ -3333
์ ๋ฃ์๋ค.
๋จํ์์ ๊ฒฝ์ฐ๋ index
๊ฐ ๋ฐฐ์
์ธ ๊ฒฝ์ฐ๋ฅผ ์ฐพ์ ๋ if not i % target
๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋๋ฐ ๊ทธ๋ด ํ์ ์์ด ์์์ ์ target
์ผ๋ก ํ์ฌ for i in range(target, n+1, target)
์ ์ ์ธํ๋ฉด ๋ฐฐ์์ index
๋ง ์ถ๋ ฅ ํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ค์์น์ ์ํ๋ฅผ ๋ฐ๊ฟ ๋ 0 -> 1
1 -> 0
๋ฐ์ ์์ผ๋ฏ๋ก 1
์ ๋ํ ๊ฐ์ 2
๋ก ๋๋๋ฉด ์ฝ๋๋ฅผ ๋์ฑ ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ ์ ์๋ค.
์ฌํ์์ ๊ฒฝ์ฐ๋ try, except
๊ตฌ๋ฌธ์ ์ฌ์ฉํ๋๋ฐ, target
์ ์ค์ฌ์ผ๋ก left_index
, right_index
๋ฅผ ์ ์ธํ ๋ค์ left
์ right
๊ฐ ๊ฐ์์ง ๋น๊ตํ๊ณ ๊ฐ๋ค๋ฉด left
์ right
๋ฒ์๋ฅผ ๋ํ๊ณ ๋ค๋ฅด๋ค๋ฉด ์ข
๋ฃ ์ํค๋ flag
๋ฌธ์ ์ ์ฉํ๋ค.
๋, ๋ฒ์๋ ๋ฌดํ์ ์ผ๋ก ๋์ด๋ ์ ์์ผ๋ฏ๋ก arr[index]
๊ฐ ๋ฒ์ด๋๋ฉด error
๊ฐ ๋ฐ์ํ๋๋ฐ, ์ด๋ try-except
๋ฌธ์ ์์ฑํ๋ฉด indexError
์ ๊ฑธ๋ฆฌ์ง ์๋๋ค. ์ดํ ๋ํ์ง ๋ฒ์๋งํผ ์ค์์น์ ์ํ๋ฅผ ๋ฐ๊ฟ์ผ ํ๋๋ฐ ์ค์์น๋ 0 -> 1
1 -> 0
๋ฐ์ ์์ผ๋ฏ๋ก 1
์ ๋ํ ๊ฐ์ 2
๋ก ๋๋๋ฉด ์ฝ๋๋ฅผ ๋์ฑ ๊ฐ๊ฒฐํ๊ฒ ์์ฑ ํ ์ ์๋ค.
๋ง์ง๋ง์ผ๋ก ์ถ๋ ฅ์ ํ ์ค์ 20
๊ฐ์ฉ ๋์ด์ ์ถ๋ ฅํ๋๋ฐ ์ด๋ index
๋ฅผ 1๋ถํฐ ์์ํ์ฌ i
๊ฐ 20๊ณผ ๋๋์ด ๋จ์ด์ง๋ค๋ฉด ์ค๋ฐ๊ฟํด์ฃผ๋ ์ฝ๋์ธ print()
๋ฅผ ์ฃผ๋ฉด๋๋ค.
# ๋์ ์ฝ๋
n = int(input())
arr = [-3333] + list(map(int, input().split())) # append useless index arr[0]
def male(switch, target): # male case
for i in range(1, n + 1): # change switch state
if not i % target:
if not switch[i]:
switch[i] = 1
else:
switch[i] = 0
return switch
def female(switch, target): # female case
left, right = target - 1, target + 1
flag = True
try: # prevent indexError
while flag:
if switch[left] == switch[right]:
left -= 1
right += 1
else:
flag = False
except:
pass
for i in range(left + 1, right): # change switch state
if not switch[i]:
switch[i] = 1
else:
switch[i] = 0
return switch
student = int(input())
for _ in range(student):
sex, number = map(int, input().split())
if sex == 1:
male(arr, number)
else:
female(arr, number)
print(arr)
for i in range(1, len(arr)): # print each 20 index
print(arr[i], end=' ')
if not i % 20:
print()
# ๊ฐ๊ฒฐํ ์ฝ๋
n = int(input())
arr = [-3333] + list(map(int, input().split())) # append useless index arr[0]
def male(switch, target): # male case
for i in range(target, n + 1, target): # change switch state
switch[i] = (switch[i] + 1) % 2
return switch
def female(switch, target): # female case
left, right = target - 1, target + 1
flag = True
try: # prevent indexError
while flag:
if switch[left] == switch[right]:
left -= 1
right += 1
else:
flag = False
except:
pass
for i in range(left + 1, right): # change switch state
switch[i] = (switch[i] + 1) % 2
return switch
student = int(input())
for _ in range(student):
sex, number = map(int, input().split())
if sex == 1:
male(arr, number)
else:
female(arr, number)
for i in range(1, len(arr)): # print each 20 index
print(arr[i], end=' ')
if not i % 20:
print()
'Algorithm > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 2902 - KMP๋ ์ KMP์ผ๊น? (0) | 2021.06.02 |
---|---|
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 20436 - ZOAC 3 (4) | 2021.06.01 |
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 2490 - ์ท๋์ด (0) | 2021.05.30 |
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 3009 - ๋ค ๋ฒ์งธ ์ (0) | 2021.05.30 |
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 1110 - ํ์ ์นธ (0) | 2021.05.28 |
๋๊ธ