https://www.acmicpc.net/problem/20310
20310๋ฒ: ํ๋ ธ์ค
์ด๋ ๋ , ํ๋ ธ์ค๋ 0๊ณผ 1๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด $S$๋ฅผ ๋ณด์๋ค. ์ ๊ธฐํ๊ฒ๋, $S$๊ฐ ํฌํจํ๋ 0์ ๊ฐ์์ $S$๊ฐ ํฌํจํ๋ 1์ ๊ฐ์๋ ๋ชจ๋ ์ง์๋ผ๊ณ ํ๋ค. ๊ฐ์๊ธฐ ์ฌ์ ์ด ๋ ํ๋ ธ์ค๋ $S$๋ฅผ ๊ตฌ์ฑํ๋ ๋ฌธ์
www.acmicpc.net
๋ฌธ์ ํ์ด
import sys
numbers=list(sys.stdin.readline().strip())
zero, one = numbers.count('0')//2, numbers.count('1')//2
# 0์ ๋ค์์๋ถํฐ ์ง์์ง ํ์
for idx in range(len(numbers)-1,-1,-1):
if zero<=0:
break
if numbers[idx]=='0':
numbers[idx]=-1
zero-=1
# 1์ ์์์๋ถํฐ ์ง์์ง ํ์
for idx in range(len(numbers)):
if one<=0:
break
if numbers[idx]=='1':
numbers[idx]=-1
one-=1
for idx in range(len(numbers)):
if numbers[idx]!=-1:
print(numbers[idx], end='')
- ๊ฐ๋จํ ๋ฌธ์์ด ๋ฌธ์ ์์ง๋ง, ๊ธฐ์กด ๋ฐฐ์ด์ ๋ฐฐ์น๋ฅผ ๋ฐ๊ฟ ์ ์๋ค๋ ์กฐ๊ฑด์ ๊ฐ๊ณผํด์ ์ฒ์์ 25์ ์ ๋งก์๋ค!
- ์ฒ์์ 0๊ณผ 1์ ๊ฐ์๋ฅผ countํด์ 2๋ก ๋๋ ์ ์ ์ฅํ๊ณ , ์ฌ์ ์์ผ๋ก ๊ฐ์ฅ ๋น ๋ฅธ ๊ฒฝ์ฐ๋ฅผ ์ถ๋ ฅํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ด๊ธฐ์ '0'*(0์ ๊ฐ์)+'1'*(1์ ๊ฐ์)๋ฅผ ์ถ๋ ฅํ์๋ค. (๋ฌธ์ ๋ฅผ ๋๋ฐ๋ก ์ฝ๊ณ ์ดํดํ์ใ ใ )
- ๊ธฐ์กด ๋ฐฐ์ด์ ๋ฐฐ์น๋ฅผ ๋ฐ๊พธ์ง ์์ผ๋ฉด์ ์ฌ์ ์์ผ๋ก ๊ฐ์ฅ ๋น ๋ฅธ ๋ฌธ์์ด์ ์ถ๋ ฅํ๊ธฐ ์ํด '0'์ ์ง์์ผ ํ๋ 0์ ๊ฐ์๋งํผ ๋ค์์๋ถํฐ ์ง์์ฃผ๊ณ , '1'์ 1์ ๊ฐ์๋งํผ ์์์๋ถํฐ ์ง์์ฃผ๋ฉด 0์ด ์์ชฝ์ ์ต๋ํ ์์นํ ์ ์๊ณ , 1์ด ์ต๋ํ ๋ค์ชฝ์ ์์นํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ์ ์์ผ๋ก ๊ฐ์ฅ ๋น ๋ฅธ ๋ฌธ์์ด์ ๊ตฌํ ์ ์๋ค.
- ์ฌ๊ธฐ์ ๋ฌธ์์ด์ ์ง์ด๋ค๊ณ ๋จ์ํ pop(์ง์์ผ ํ๋ ์ธ๋ฑ์ค)๋ก ์ฒ๋ฆฌํด์ฃผ๋ฉด popํด์ ์ง์์ง๋ ๋ฐฐ์ด์ ๋ฐ๋ผ ์ด๋ฏธ ํ์ํ ์ธ๋ฑ์ค๋ฅผ ๋ ์ง์ฐ๊ฑฐ๋, ์ง์ฐ๋ฉด ์๋๋ ์ธ๋ฑ์ค๋ฅผ ์ง์ธ ์ ์๊ธฐ ๋๋ฌธ์ numbers ๋ฐฐ์ด์ ์ญ์ ๋์๋ค๋ ์ฒ๋ฆฌ๋ฅผ -1๋ก ํ์ํ๋ค.
- ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ์ฐ์ฐ์ ๋๋ธ ํ์ numbers ๊ฐ์ด -1์ด ์๋ ์์๋ค์ ์ถ๋ ฅํด์ฃผ๋ฉด ๋๋ค.
'์๊ณ ๋ฆฌ์ฆ > Greedy' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค 21758 ๐ฅ] ๊ฟ ๋ฐ๊ธฐ (2) | 2023.11.30 |
---|---|
[๋ฐฑ์ค 1931 ๐ฅ] ํ์์ค ๋ฐฐ์ (0) | 2023.11.30 |
[๋ฐฑ์ค 11501 ๐ฅ] ์ฃผ์ (0) | 2023.10.07 |
[๋ฐฑ์ค 1461 ๐ฅ] ๋์๊ด (2) | 2023.08.28 |
[๋ฐฑ์ค 2138 ๐ฅ] ์ ๊ตฌ์ ์ค์์น (0) | 2023.08.01 |