๋ฌธ์ ์ค๋ช
๋ฌธ์
N๋ช ์ ์ฌ๋๋ค์ ๋งค์ผ ์์นจ ํ ์ค๋ก ์ ๋ค. ์ด ์ฌ๋๋ค์ ์๋ฆฌ๋ฅผ ๋ง์๋๋ก ์์ง ๋ชปํ๊ณ ์ค๋ฏผ์์ ์ง์๋๋ก ์ ๋ค. ์ด๋ ๋ ์ฌ๋๋ค์ ์ค๋ฏผ์์ด ์ฌ๋๋ค์ด ์ค ์๋ ์์น๋ฅผ ๊ธฐ๋กํด ๋๋๋ค๋ ๊ฒ์ ์์๋ค. ๊ทธ๋ฆฌ๊ณ ์์นจ์ ์๊ธฐ๊ฐ ๊ธฐ๋กํด ๋์ ๊ฒ๊ณผ ์ฌ๋๋ค์ด ์ค์ ์ ์์น๊ฐ ๋ง๋์ง ํ์ธํ๋ค. ์ฌ๋๋ค์ ์๊ธฐ๋ณด๋ค ํฐ ์ฌ๋์ด ์ผ์ชฝ์ ๋ช ๋ช ์์๋์ง๋ง์ ๊ธฐ์ตํ๋ค. N๋ช ์ ์ฌ๋์ด ์๊ณ , ์ฌ๋๋ค์ ํค๋ 1๋ถํฐ N๊น์ง ๋ชจ๋ ๋ค๋ฅด๋ค. ๊ฐ ์ฌ๋๋ค์ด ๊ธฐ์ตํ๋ ์ ๋ณด๊ฐ ์ฃผ์ด์ง ๋, ์ค์ ์ด๋ป๊ฒ ์์ผ ํ๋์ง ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ฌ๋์ ์ N์ด ์ฃผ์ด์ง๋ค. N์ 10๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. ๋์งธ ์ค์๋ ํค๊ฐ 1์ธ ์ฌ๋๋ถํฐ ์ฐจ๋ก๋๋ก ์๊ธฐ๋ณด๋ค ํค๊ฐ ํฐ ์ฌ๋์ด ์ผ์ชฝ์ ๋ช ๋ช ์ด ์์๋์ง ์ฃผ์ด์ง๋ค. i๋ฒ์งธ ์๋ 0๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , N-i๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค. i๋ 0๋ถํฐ ์์ํ๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ค์ ์ ์์๋๋ก ํค๋ฅผ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ
| ๋ฒํธ | ์ ๋ ฅ | ์ถ๋ ฅ |
|---|---|---|
| 1 | 4 2 1 0 0 | 4 2 1 3 |
| 2 | 5 0 0 0 0 0 | 1 2 3 4 5 |
| 3 | 6 5 4 3 2 1 0 | 6 5 4 3 2 1 |
| 4 | 7 6 1 1 1 2 0 0 | 6 2 3 4 7 5 1 |
๋ฌธ์ ํ์ด
๋์ ์ ๊ทผ ๋ฐฉ๋ฒ
ํค์ ๋ํ ์ค๋ฆ์ฐจ์์ผ๋ก ์ฐ์ ๋์ ๋ด ์์น + ๋๋ณด๋ค ํฐ ์ฌ๋์ด ์์ ๋ช ๋ช
์๋์ง ์์น์ ์ ๋ค.
๊ทธ๋ฌ๋ ๋ด ๋ค์ ๋๋ณด๋ค ์์ ์ฌ๋์ด ์ฐ๋ค๋ฉด ๋ด ๋ค์ ์๋ ์์์ฌ๋ ์ ๋งํผ ์์ผ๋ก ์ฎ๊ฒจ์ ๋ค.
๊ทธ๋ฆฌ๊ณ ์์ผ๋ก ์ฎ๊ฒจ์๊ณ ์๋ ๊ณผ์ ์์ ์์์ฌ๋์ ๋ง๋๋ค๋ฉด ๊ทธ ์ ๋งํผ ์์ผ๋ก ์ฎ๊ฒจ์ ๋ค.
์ด ๊ณผ์ ์ ์ฝ๋๋ก ํํํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
์ฝ๋ ์ค๋ช
for(let i = 0; i < n; i++) {
let tempCnt = 0;
for(let j = n-1; j >= i+list[i]-tempCnt; j--){
tempCnt += result[j] ? 1:0;
}
result[i+list[i]-tempCnt] = i+1;
}i for๋ฌธ์ ๋๋ฉด์ ์
๋ ฅ์ผ๋ก ๋ค์ด์จ ๋ฐฐ์ด์ ์์๋ฅผ ํ๋์ฉ ํ์ํ๋ค.
j for๋ฌธ์์๋ ๋ฐฐ์ด์ ๋ค์ชฝ๋ถํฐ ํ์ํ๋ฉฐ tempCnt๋ผ๋ ๋ณ์๋ฅผ ์
๋ฐ์ดํธ ํด์ค๋ค.
tempCnt์๋ ๋ด ๋ค์ ์๋ ๋๋ณด๋ค ์์ ์ฌ๋์ ์๋ฅผ ๊ตฌํด์ ์ ์ฅํ๋ค.
j for๋ฌธ์ ๋ฒ์๋ฅผ j >= i+list[i]-tempCnt;ํ ์ด์ ๋ ๋๋ณด๋ค ์์์ฌ๋์ด ๋ด๊ฐ ์์ผ ํ ์์น ๋ค์ ์์ด์ ์์ผ๋ก ์ฎ๊ฒจ์๋ ๋์ค์ ๋๋ณด๋ค ์์ ์ฌ๋์ ๋ง๋ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์์์ ๊ตฌํ tempCnt๋ฅผ ๋ฐํ์ผ๋ก i+list[i]-tempCnt์์น์ ์ค์ ์ธ์ด๋ค.
๋ฌธ์ ํ๊ธฐ
์กฐ๊ธ๋ง ๊ณฐ๊ณฐํ ์๊ฐํ๋ฉด ๊ฐ๋จํ ๋ฌธ์ ์ธ๋ฐ ์ฑ๊ธํ๊ฒ ์์ ๋ผ์๋ง์ถ๊ธฐ ์์ผ๋ก ํธ๋๊น ํท๊ฐ๋ ธ๋ค. ๋ธ๋ก๊ทธ์ ํฌ์คํ ํ๋ ค๊ณ ์ฝ๋ ์ค๋ช ์ ์์ฑํ๋ฉด์ ์ฐจ๋ถํ ์๊ฐํด๋ณด๋ ์ด์ ๋ด ์ฝ๋์ ๊ฐ์ ์ ์ด ๋ณด์ฌ์ ์กฐ๊ธ ์์ ํ๋ค. ๊ตฌํ ๋ฌธ์ ๋ ๋ฐ๋ก ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ๋ณด๋จ ๊ผผ๊ผผํ๊ฒ ์๊ฐํ ํ ๊ตฌํํ๋๋ก ํด์ผ๊ฒ ๋ค.