ํฐ์คํ ๋ฆฌ ๋ทฐ
์๊ณ ๋ฆฌ์ฆ/๊ธฐ์ถ ๋ฐ ๋ฐฑ์ค ํ์ด
[ํ๋ก๊ทธ๋๋จธ์ค_์๊ฐ ์ฝ๋ ์ฑ๋ฆฐ์ง]์ผ๊ฐ ๋ฌํฝ์ด
choi95 2021. 10. 30. 19:35๋ฌธ์
๋ฌธ์ ์ค๋ช
์ ์ n์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ๋ค์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๋ฐ๋ณ์ ๊ธธ์ด์ ๋์ด๊ฐ n์ธ ์ผ๊ฐํ์์ ๋งจ ์ ๊ผญ์ง์ ๋ถํฐ ๋ฐ์๊ณ ๋ฐฉํฅ์ผ๋ก ๋ฌํฝ์ด ์ฑ์ฐ๊ธฐ๋ฅผ ์งํํ ํ, ์ฒซ ํ๋ถํฐ ๋ง์ง๋ง ํ๊น์ง ๋ชจ๋ ์์๋๋ก ํฉ์น ์๋ก์ด ๋ฐฐ์ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- n์ 1 ์ด์ 1,000 ์ดํ์ ๋๋ค.
์ ์ถ๋ ฅ ์
nresult
4 | [1,2,9,3,10,8,4,5,6,7] |
5 | [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9] |
6 | [1,2,15,3,16,14,4,17,21,13,5,18,19,20,12,6,7,8,9,10,11] |
๋ฌธ์ ํ์ด
- ์ด 3๋ฐฉํฅ์ผ๋ก ์ด๋: ์๋๋ก ๋ด๋ ค๊ฐ๊ธฐ, ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํ๊ธฐ, ์๋ก ์ฌ๋ผ๊ฐ๊ธฐ
- ๋ฐฉํฅ์ ์ ํ ๊ธฐ์ค์ ์ฃผ์ด์ง ๋ฐฐ์ด ์ธ๋ฑ์ค ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ ์๊ฐ(out of range)์ผ๋ก ์ก์
- ์ ์ (end)๊น์ง ๊ณ์ํด์ ์ํํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๊ฐ์ฐ ๋ ๋ฐฉํฅ ๊ฐ์ 3์ ๋๋ ๋๋จธ์ง ๊ฐ์ ์ฌ์ฉํ์ฌ index = {0, 1, 2}์ ๋ฌดํ ๋ฐ๋ณต
์ฝ๋
function solution(n) {
let answer = Array.from(Array(n), (_, i) => Array(++i).fill(0));
let dx = [0, 1, -1];
let dy = [1, 0, -1];
let end = Math.floor(n * (n + 1) / 2);
let [x, y] = [0, 0];
answer[y][x] = 1;
let num = 2;
let dir = 0;
while(num <= end) {
let nx = x + dx[dir];
let ny = y + dy[dir];
if(nx >= 0 && nx < n && ny >= 0 && ny < n && answer[ny][nx] === 0) {
answer[ny][nx] = num++;
x = nx;
y = ny;
} else dir = (dir + 1) % 3;
}
return answer.flat();
}
๋ฐฉํฅ์ ์ด๋ ๋ฐ ์ ํ๊ณผ ๊ด๋ จ ๋ ๋ฌธ์ ๋ค
https://choi95.tistory.com/126?category=881084
https://choi95.tistory.com/133?category=881084
'์๊ณ ๋ฆฌ์ฆ > ๊ธฐ์ถ ๋ฐ ๋ฐฑ์ค ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธ