[๋ฐฑ์ค 1138 ๐ฅ] ํ ์ค๋ก ์๊ธฐ
https://www.acmicpc.net/problem/1138
1138๋ฒ: ํ ์ค๋ก ์๊ธฐ
์ฒซ์งธ ์ค์ ์ฌ๋์ ์ N์ด ์ฃผ์ด์ง๋ค. N์ 10๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. ๋์งธ ์ค์๋ ํค๊ฐ 1์ธ ์ฌ๋๋ถํฐ ์ฐจ๋ก๋๋ก ์๊ธฐ๋ณด๋ค ํค๊ฐ ํฐ ์ฌ๋์ด ์ผ์ชฝ์ ๋ช ๋ช ์ด ์์๋์ง ์ฃผ์ด์ง๋ค. i๋ฒ์งธ ์๋ 0๋ณด๋ค
www.acmicpc.net
๋ฌธ์
N๋ช ์ ์ฌ๋๋ค์ ๋งค์ผ ์์นจ ํ ์ค๋ก ์ ๋ค. ์ด ์ฌ๋๋ค์ ์๋ฆฌ๋ฅผ ๋ง์๋๋ก ์์ง ๋ชปํ๊ณ ์ค๋ฏผ์์ ์ง์๋๋ก ์ ๋ค.
์ด๋ ๋ ์ฌ๋๋ค์ ์ค๋ฏผ์์ด ์ฌ๋๋ค์ด ์ค ์๋ ์์น๋ฅผ ๊ธฐ๋กํด ๋๋๋ค๋ ๊ฒ์ ์์๋ค. ๊ทธ๋ฆฌ๊ณ ์์นจ์ ์๊ธฐ๊ฐ ๊ธฐ๋กํด ๋์ ๊ฒ๊ณผ ์ฌ๋๋ค์ด ์ค์ ์ ์์น๊ฐ ๋ง๋์ง ํ์ธํ๋ค.
์ฌ๋๋ค์ ์๊ธฐ๋ณด๋ค ํฐ ์ฌ๋์ด ์ผ์ชฝ์ ๋ช ๋ช ์์๋์ง๋ง์ ๊ธฐ์ตํ๋ค. N๋ช ์ ์ฌ๋์ด ์๊ณ , ์ฌ๋๋ค์ ํค๋ 1๋ถํฐ N๊น์ง ๋ชจ๋ ๋ค๋ฅด๋ค.
๊ฐ ์ฌ๋๋ค์ด ๊ธฐ์ตํ๋ ์ ๋ณด๊ฐ ์ฃผ์ด์ง ๋, ์ค์ ์ด๋ป๊ฒ ์์ผ ํ๋์ง ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ฌ๋์ ์ N์ด ์ฃผ์ด์ง๋ค. N์ 10๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. ๋์งธ ์ค์๋ ํค๊ฐ 1์ธ ์ฌ๋๋ถํฐ ์ฐจ๋ก๋๋ก ์๊ธฐ๋ณด๋ค ํค๊ฐ ํฐ ์ฌ๋์ด ์ผ์ชฝ์ ๋ช ๋ช ์ด ์์๋์ง ์ฃผ์ด์ง๋ค. i๋ฒ์งธ ์๋ 0๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , N-i๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค. i๋ 0๋ถํฐ ์์ํ๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ค์ ์ ์์๋๋ก ํค๋ฅผ ์ถ๋ ฅํ๋ค.

๋ฌธ์ ํ์ด
import sys
n=int(sys.stdin.readline())
ans=[0]*(n)
height=list(map(int, sys.stdin.readline().strip().split(' ')))
ans[height[0]]=1
for i in range(1,n):
count = 0
for j in range(n):
if ans[j]==0 and height[i] == count:
ans[j] = i + 1
break
if ans[j]==0:
count+=1
print(*ans, sep=' ')
- ํค๊ฐ 1์ธ ์ฌ๋์ ์์น ์ธ๋ฑ์ค๋ ์ผ์ชฝ์ ์์นํ ์์ ๋ณด๋ค ํค ํฐ ์ฌ๋์ ์์ ๊ฐ๋ค. (๊ฐ์ฅ ์์ ์ฌ๋์ด๋ฏ๋ก)
- ์ ๊ณผ์ ์ฒ๋ผ ์ผ์ชฝ์ ์์ ๋ณด๋ค ํฐ ์๊ฐ ์ฌ ์ ์๋ ๊ฐ์๋งํผ์ ๋น ์นธ์ ๋จ๊ธฐ๊ณ , ๋ค์์ผ๋ก ์ค๋ ์ฒซ๋ฒ์งธ ์นธ์ ํด๋น ์ฌ๋์ ํค๋ฅผ ์ ์ฅํด์ฃผ๋ฉด ๋๋ค.
- ์ด๋ฅผ ๊ตฌํํ๊ธฐ ์ํด์ for๋ฌธ์ ์ด์ฉํด์ ์์ ๋น ์นธ์ ๊ฐ์(ans[j]==0)๋ฅผ ์นด์ดํ ํด์ฃผ๊ณ ํ์ ์ธ๋ฑ์ค๋ฅผ +1ํด์ฃผ๋ฉด์ ์นด์ดํ ํ ๊ฐ์๊ฐ ์ผ์ชฝ์ ์์นํ ์์ ๋ณด๋ค ํฐ ์ฌ๋์ ์์ ์ผ์นํ๋ฉด์ ans[j]๊ฐ 0์ผ๋ก ๋น ์นธ์ธ ์ธ๋ฑ์ค๋ฅผ ๋ฐ๊ฒฌํ๋ฉด ํด๋น ์ธ๋ฑ์ค์ ํ์ฌ ํ์ ์ค์ธ ์ฌ๋์ ํค๋ฅผ ์ ์ฅํด์ค๋ค.