๋ฌธ์
N๊ฐ์ ์ค์์น์ N๊ฐ์ ์ ๊ตฌ๊ฐ ์๋ค. ๊ฐ๊ฐ์ ์ ๊ตฌ๋ ์ผ์ ธ ์๋ ์ํ์ ๊บผ์ ธ ์๋ ์ํ ์ค ํ๋์ ์ํ๋ฅผ ๊ฐ์ง๋ค. i(1 < i < N)๋ฒ ์ค์์น๋ฅผ ๋๋ฅด๋ฉด i-1, i, i+1์ ์ธ ๊ฐ์ ์ ๊ตฌ์ ์ํ๊ฐ ๋ฐ๋๋ค. ์ฆ, ๊บผ์ ธ ์๋ ์ ๊ตฌ๋ ์ผ์ง๊ณ , ์ผ์ ธ ์๋ ์ ๊ตฌ๋ ๊บผ์ง๊ฒ ๋๋ค. 1๋ฒ ์ค์์น๋ฅผ ๋๋ ์ ๊ฒฝ์ฐ์๋ 1, 2๋ฒ ์ ๊ตฌ์ ์ํ๊ฐ ๋ฐ๋๊ณ , N๋ฒ ์ค์์น๋ฅผ ๋๋ ์ ๊ฒฝ์ฐ์๋ N-1, N๋ฒ ์ ๊ตฌ์ ์ํ๊ฐ ๋ฐ๋๋ค.
N๊ฐ์ ์ ๊ตฌ๋ค์ ํ์ฌ ์ํ์ ์ฐ๋ฆฌ๊ฐ ๋ง๋ค๊ณ ์ ํ๋ ์ํ๊ฐ ์ฃผ์ด์ก์ ๋, ๊ทธ ์ํ๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์ค์์น๋ฅผ ์ต์ ๋ช ๋ฒ ๋๋ฅด๋ฉด ๋๋์ง ์์๋ด๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์์ฐ์ N(2 ≤ N ≤ 100,000)์ด ์ฃผ์ด์ง๋ค. ๋ค์ ์ค์๋ ์ ๊ตฌ๋ค์ ํ์ฌ ์ํ๋ฅผ ๋ํ๋ด๋ ์ซ์ N๊ฐ๊ฐ ๊ณต๋ฐฑ ์์ด ์ฃผ์ด์ง๋ค. ๊ทธ ๋ค์ ์ค์๋ ์ฐ๋ฆฌ๊ฐ ๋ง๋ค๊ณ ์ ํ๋ ์ ๊ตฌ๋ค์ ์ํ๋ฅผ ๋ํ๋ด๋ ์ซ์ N๊ฐ๊ฐ ๊ณต๋ฐฑ ์์ด ์ฃผ์ด์ง๋ค. 0์ ์ผ์ ธ ์๋ ์ํ, 1์ ๊บผ์ ธ ์๋ ์ํ๋ฅผ ์๋ฏธํ๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋ต์ ์ถ๋ ฅํ๋ค. ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ์๋ -1์ ์ถ๋ ฅํ๋ค.
๋ฌธ์ ํ์ด
import sys
n=int(sys.stdin.readline())
start=list(map(int, sys.stdin.readline().strip()))
goal=list(map(int, sys.stdin.readline().strip()))
ans=[]
# 0๋ฒ ์ค์์น๋ฅผ ๋๋ฅธ ๊ฒฝ์ฐ
pushzero=1
pushzero_start=start.copy()
pushzero_start[0]=1-pushzero_start[0]
pushzero_start[1]=1-pushzero_start[1]
for i in range(1,n):
if pushzero_start[i-1]!=goal[i-1]:
pushzero+=1
# i๋ฒ ์ค์์น ๋๋ฌ์ผ ํจ
for t in (i-1, i, i+1):
if 0<=t<n:
pushzero_start[t]=1-pushzero_start[t]
if pushzero_start==goal:
ans.append(pushzero)
# 0๋ฒ ์ค์์น ์๋๋ฅธ ๊ฒฝ์ฐ
notpushzero=0
for i in range(1,n):
if start[i-1]!=goal[i-1]:
notpushzero+=1
for t in (i-1,i,i+1):
if 0<=t<n:
start[t]=1-start[t]
if start==goal:
ans.append(notpushzero)
if ans:
print(min(ans))
else:
print(-1)
์ด ๋ฌธ์ ๋ ํ์ด๊ฐ ๋ ์ค๋ฅด์ง ์์์ ์๋ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ๋ค...!
https://staticvoidlife.tistory.com/143
[๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ] ์ ๊ตฌ์ ์ค์์น
์์ ์ ๋ ฅ 1 3 000 010 ์์ ์ถ๋ ฅ 1 3 https://www.acmicpc.net/problem/2138 2138๋ฒ: ์ ๊ตฌ์ ์ค์์น N๊ฐ์ ์ค์์น์ N๊ฐ์ ์ ๊ตฌ๊ฐ ์๋ค. ๊ฐ๊ฐ์ ์ ๊ตฌ๋ ์ผ์ ธ ์๋(1) ์ํ์ ๊บผ์ ธ ์๋ (0) ์ํ ์ค ํ๋์ ์ํ๋ฅผ ๊ฐ
staticvoidlife.tistory.com
์ ๋ธ๋ก๊ทธ์ ํ์ด๋๋ก ์ดํดํ๋ฉฐ ํ์๋ค. ์ด๋ฐ ์๊ฐ์ ์ด๋์ ๋ ๊ฒฝ์ง์ ์ฌ๋ผ์ผ ์๊ฐํด๋ผ ์ ์๋์ง ์ ๊ธฐํ๋ค. ๋ถ๋ฐํ์!
์ถ๊ฐ์ ์ผ๋ก
1. ๋ฒํผ์ ๋๋ฅด๋ ์์๋ ์๊ด์ด ์๋ค.
์๋ฅผ ๋ค์ด, 000์ ์๋ก ๋ค๋ฉด 1๋ฒ์ ๋๋ฅด๊ณ 2๋ฒ์ ๋๋ฅด๋ ๊ฒฝ์ฐ 000 -> 111 -> 100์ด๊ณ ,
2๋ฒ์ ๋๋ฅด๊ณ 1๋ฒ์ ๋๋ฅด๋ ๊ฒฝ์ฐ 000 -> 011 -> 100์ผ๋ก ๊ฒฐ๊ณผ์ ์ผ๋ก 100 ๋์ผํ ๊ฐ์ด ๋๋ค.
2. ์ต์ํ ๋๋ฌ์ผ ํ๋ค๋ ๊ฒ์ ๊ฐ ์ค์์น๋ฅผ ์ต๋ 1๋ฒ๊น์ง ๋๋ฌ์ผ ํ๋ค๋ ๊ฒ์ด๋ค.
๊ทธ ์ด์ ๋ 2๋ฒ ๋๋ฅด๋ ๊ฒฝ์ฐ ์์ ๋๋ฅด์ง ์๋ ์ํ์ ๋์ผํ๊ณ , 3๋ฒ ๋๋ฅด๋ ๊ฒฝ์ฐ 1๋ฒ ๋๋ฅด๋ ์ํ์ ๋์ผํ๊ณ , 4๋ฒ์ ๋๋ฅด๋ ๊ฒฝ์ฐ ๋ค์ ์์ ๋๋ฅด์ง ์๋ ์ํ์ ๋์ผํด์ง๋ค. ์ด๋ ๊ฒ ๋๋ฅด๋ ๊ฒฐ๊ณผ๊ฐ ๋ฐ๋ณต๋๊ธฐ ๋๋ฌธ์ 0๋ฒ ๋๋ 1๋ฒ ๋๋ฌ์ผ ๋ฒํผ์ ์ต์ํํด์ ๋๋ฅผ ์ ์๋ค.
'์๊ณ ๋ฆฌ์ฆ > Greedy' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค 21758 ๐ฅ] ๊ฟ ๋ฐ๊ธฐ (2) | 2023.11.30 |
---|---|
[๋ฐฑ์ค 1931 ๐ฅ] ํ์์ค ๋ฐฐ์ (0) | 2023.11.30 |
[๋ฐฑ์ค 20310 ๐ฅ] ํ๋ ธ์ค (0) | 2023.10.16 |
[๋ฐฑ์ค 11501 ๐ฅ] ์ฃผ์ (0) | 2023.10.07 |
[๋ฐฑ์ค 1461 ๐ฅ] ๋์๊ด (2) | 2023.08.28 |