๋ฌธ์ ์ดํด๋ณด๊ธฐ

์์ gif์์ ๋ณด๋ ๊ฒ ์ฒ๋ผ n^2๋ฐฐ์ด์ ์์ฑํ ํ ์ด๋ฅผ ์ผ๋ ฌ๋ก ๋์ดํ ๋ค์์ left~right์ ์ธ๋ฑ์ค์ ์๋ ์์๋ฅผ ์ถ๋ ฅํ๋ฉด ๋๋ ๋ฌธ์ ์ด๋ค.
"์ ์ด ๋ฌธ์ ๊ฐ 2๋ ๋ฒจ์ผ๊น?"ํ๋ ์๋ฌธ์ด ๋ค ์ ๋๋ก ๊ฐ๋จํด ๋ณด์ด์ง๋ง ์ฌ์ค์ ๊ทธ๋ ์ง ์๋ค.
์ ์น์ ํ gif๋ ํจ์ ์ด๋ค.
์ ์ค๋ช
๋ง ๋ฏฟ๊ณ ์ฝ๋๋ฅผ ๊ตฌํํ๋ค๋ฉด (signal: aborted (core dumped))๋ผ๋ ์ค๋ฅ๋ฅผ ๋ง๋๊ฒ ๋๋ค.

(signal: aborted (core dumped)) ์ค๋ฅ๋ ํ๋ก๊ทธ๋จ์ด ์์ธ ์ํฉ์ ์ง๋ฉดํด ์ข
๋ฃ๋์๊ฑฐ๋, ์์คํ
๋ฆฌ์์ค ๋ถ์กฑ, ์๋ชป๋ ๋ฉ๋ชจ๋ฆฌ ์ก์ธ์ค, ์คํ ์ค๋ฒํ๋ก์ฐ ๋ฑ์ ์ด์ ๋ก ๋ฐ์ํ๋ค. ์ด ๋ฌธ์ ์์๋
2์ฐจ์ ๋ฐฐ์ด์ ์ฌ์ด์ฆ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ์๊ธด ๊ฒ ๊ฐ๋ค.
๊ทธ๋ ๋ค๋ฉด, 2์ฐจ์๋ฐฐ์ด์ ์ฌ์ฉํ์ง ์๊ณ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํ๋ค.
์ด ๋ฌธ์ ์ ์ ํ์ฌํญ์ ์ฝ์ด๋ณด๋ฉด n์ ๋ฒ์๊ฐ 1 <= n <= 10^7์ธ ๊ฒ์ ์ ์
์๋๋ฐ javascript ๋ฐฐ์ด์ ์ต๋ ๊ธธ์ด๋ 4294967296(2^32)๋ฏธ๋ง
์ด๊ธฐ ๋๋ฌธ์
n*n = 10^14 ํฌ๊ธฐ์ 1์ฐจ์ ๋ฐฐ์ด์ ์์ฑํ๋ ๊ฒ๋ ๋ถ๊ฐ๋ฅํ๋ค.
๊ฒฐ๊ตญ ๋จ์ ๋ฐฉ๋ฒ์ left ~ right๊น์ง ๋ฐ๋ณต๋ฌธ์ ๋๋ฉด์ ํด๋นํ๋ ์ธ๋ฑ์ค์ ๊ฐ์ ๊ณ์ฐํด์ฃผ๋ ๊ฒ์ด๋ค.
๊ตฌํํ๊ธฐ
๋ชซ๊ณผ ๋๋จธ์ง ์ฐ์ฐ์ ์ด์ฉํด์ ๋ฐฐ์ด์ ์ด๊ณผ ํ์ ์ ๊ทผํ ์ ์๋ค
์๋ ๊ทธ๋ฆผ๊ณผ ํจ๊ป ์์ธํ๊ฒ ์์๋ณด์.

์์ ๊ทธ๋ฆผ์์ 2์ฐจ์ ๋ฐฐ์ด์ a, ํํํ๋ ๋ฐฐ์ด์ b๋ผ๊ณ ์ง์นญํ๋๋ก ํ๊ฒ ๋ค.
๊ทธ๋ ๋ค๋ฉด ์๋์ ๊ฐ์ ๋ฑ์์ด ์ฑ๋ฆฝํ๋ค.(n์ ๋ฐฐ์ด์ ํฌ๊ธฐ)
b[4] = a[โ4/nโ][4%n] = a[1][1]๋ฐ๋ผ์ ๋ชซ๊ณผ ๋๋จธ์ง ์ฐ์ฐ์ ํ์ฉํ๋ฉด ํํํ๋ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ก 2์ฐจ์ ๋ฐฐ์ด์ ์ ๊ทผํ ์ ์๋ค.
ํ์ง๋ง ์ฐ๋ฆฌ๋ ์ธ๋ฑ์ค ์์ ์ด๋ค ๊ฐ์ด ๋ค์ด์๋์ง ์์์ผ ํ๋ค.
์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ์๋ ๋ฐฐ์ด์ ๊ฐ์ ์ ์ฅํ์ง ์์ ์ฑ ์ธ๋ฑ์ค๋ง์ผ๋ก ๊ฐ์ ์์๋ด๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ์ง๋ง,
์ด ๋ฌธ์ ์์ ๋ค๋ฃจ๋ ๋ฐฐ์ด์ ํน์ ํ ๊ท์น์ ๊ฐ๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ฐ์ ์ถ๋ก ํ ์ ์๋ค.
๋ฐฐ์ด์ ์์, ๋ชซ๊ณผ ๋๋จธ์ง์ ๊ด๊ณ ์ฐพ๊ธฐ
ํํํ๋ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ index๋ผ๊ณ ์ง์นญํ ๋ ๋ค์๊ณผ ๊ฐ์ ๊ท์น์ ๋ฐ๊ฒฌํ ์ ์๋ค.
| ์์ | ํด๋น ์ด์ ์์ |
|---|---|
| โindex/nโ = 0 | โindex/nโ, โindex/nโ, โindex/nโ+2,... |
| โindex/nโ = 1 | โindex/nโ, โindex/nโ, โindex/nโ+1,... |
| โindex/nโ = 2 | โindex/nโ, โindex/nโ, โindex/nโ,... |
๊ฐ๊ฐ ์ด์ ๋ํด ๊ธ๋ก ํ์ด์ ์ค๋ช
ํ์๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ค๋ช
ํ ์ ์๋ค.
0๋ฒ์งธ ์ด์ ๋ํ๋, 0๋ฒ์งธ ์ด์ ์์๋ 1๋ถํฐ ์์๋๊ณ , 1์ด 1๋งํผ ๋ฐ๋ณต๋ ํ์ ์๊ฐ ํ๋์ฉ ์ฆ๊ฐํ๋ ํํ์.
1๋ฒ์งธ ์ด์ ๋ํ๋, 1๋ฒ์งธ ์ด์ ์์๋ 2๋ถํฐ ์์๋๊ณ , 2์ด 2๋งํผ ๋ฐ๋ณต๋ ํ์ ์๊ฐ ํ๋์ฉ ์ฆ๊ฐํ๋ ํํ์.
2๋ฒ์งธ ์ด์ ๋ํ๋, 1๋ฒ์งธ ์ด์ ์์๋ 3๋ถํฐ ์์๋๊ณ , 3์ด 3๋งํผ ๋ฐ๋ณต๋ ํ์ ์๊ฐ ํ๋์ฉ ์ฆ๊ฐํ๋ ํํ์.
์ด์ ๋จ์ ๊ฒ์ ์๊ฐ ๋ฐ๋ณต๋ ํ์ ์ฆ๊ฐํ๋ ๋ถ๋ถ์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํด์ผ ํ๋์ง์ด๋ค.
์์ ๋์ดํ ๊ท์น์ ์ ์ดํด๋ณด๋ฉด โindex/nโ >\= index%n์ผ ๋ ๊น์ง๋ โindex/nโ + 1๊ฐ ์์๊ฐ์ด ๋๊ณ ์ดํ์๋ index%n + 1์ด ์์๊ฐ์ด ๋๋ ๊ฒ์ ๋ฐ๊ฒฌํ ์ ์๋ค.
์ฝ๋ ๊ตฌํ
function solution(n, left, right) {
const res = [];
for (let i = left; i <= right; i++) {
res.push(Math.max(i % n, Math.floor(i / n)) + 1);
}
return res;
}์์์ ๋ฐ๊ฒฌํ ๊ท์น์ ๊ธฐ๋ฐ์ผ๋ก ์์ ๊ฐ์ด ๊ฐ๋จํ๊ฒ ๊ตฌํํ ์ ์๋ค.
๋ฌธ์ ํ๊ธฐ
์ฒ์์ ๋ฌธ์ ๋ฅผ ์ฝ์ ๋ gif ์ค๋ช
์ ๋ณด๊ณ ๋๋๋ค.
์ด๋ ๊ฒ๋ ์น์ ํ ๋ฌธ์ ๊ฐ ์๋ค๋...!!
ํ์ง๋ง ๊ทธ ์ ๋๋ฉ์ด์
๋๋ก ๊ตฌํํ๋๋ ํ๋ก๊ทธ๋๋จธ์ค์์ ์ฒ์ ๋ณด๋ (signal: aborted (core dumped))๋ผ๋ ์ค๋ฅ๋ฅผ ๋ง๋ฅ๋จ๋ ธ๋ค.
๊ทธ๋์ ์ข ๋ ๊ณ ๋ฏผํ ๋์ ํด๊ฒฐํ๋ค.
์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ ๋ฐ๋ก ํด๊ฒฐํ ๋ ๋ณด๋ค ํ๋ฒ ๋๊ด์ ๋ถ๋ชํ ๋ ๋ ๋ง์ ๊ฒ์ ๋ฐฐ์ธ ์ ์๋ ๊ฒ ๊ฐ๋ค.