https://school.programmers.co.kr/learn/courses/30/lessons/178871?language=javascript
ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉํ ์คํธ ์ฐ์ต์์ ํ์ธํ ์ ์๋ ๋ฌ๋ฆฌ๊ธฐ ๊ฒฝ์ฃผ ๋ฌธ์ ์ ๋๋ค. ๋์ด๋๋ ๋ ๋ฒจ 1์์๋ ๋ฎ์ ํธ์ด์ง๋ง ์๊ณ ๋ฆฌ์ฆ ์ง์์ด ๋ฐ๋ฅ์ ๊น๊น์ ๋ ์ ๋ ์ป์ ์ง์์ด ์์ด ๊ธฐ๋กํ๊ณ ์ ์์ฑํฉ๋๋ค.๐ก
๋ฌธ์
์์์๋ ๋งค๋ ๋ฌ๋ฆฌ๊ธฐ ๊ฒฝ์ฃผ๊ฐ ์ด๋ฆฝ๋๋ค. ํด์ค์ง๋ค์ ์ ์๋ค์ด ์๊ธฐ ๋ฐ๋ก ์์ ์ ์๋ฅผ ์ถ์ํ ๋ ์ถ์ํ ์ ์์ ์ด๋ฆ์ ๋ถ๋ฆ ๋๋ค. ์๋ฅผ ๋ค์ด 1๋ฑ๋ถํฐ 3๋ฑ๊น์ง "mumu", "soe", "poe" ์ ์๋ค์ด ์์๋๋ก ๋ฌ๋ฆฌ๊ณ ์์ ๋, ํด์ค์ง์ด "soe"์ ์๋ฅผ ๋ถ๋ ๋ค๋ฉด 2๋ฑ์ธ "soe" ์ ์๊ฐ 1๋ฑ์ธ "mumu" ์ ์๋ฅผ ์ถ์ํ๋ค๋ ๊ฒ์ ๋๋ค. ์ฆ "soe" ์ ์๊ฐ 1๋ฑ, "mumu" ์ ์๊ฐ 2๋ฑ์ผ๋ก ๋ฐ๋๋๋ค.
์ ์๋ค์ ์ด๋ฆ์ด 1๋ฑ๋ถํฐ ํ์ฌ ๋ฑ์ ์์๋๋ก ๋ด๊ธด ๋ฌธ์์ด ๋ฐฐ์ด players์ ํด์ค์ง์ด ๋ถ๋ฅธ ์ด๋ฆ์ ๋ด์ ๋ฌธ์์ด ๋ฐฐ์ด callings๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๊ฒฝ์ฃผ๊ฐ ๋๋ฌ์ ๋ ์ ์๋ค์ ์ด๋ฆ์ 1๋ฑ๋ถํฐ ๋ฑ์ ์์๋๋ก ๋ฐฐ์ด์ ๋ด์ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
ํ์ด (์๊ฐ ์ด๊ณผ)
์ฒ์์๋ ๋จ์ํ forEach๋ฌธ๊ณผ indexOf๋ฅผ ์ฌ์ฉํด index๋ฅผ ์ถ์ถํ๋ ๋ฐฉ์์ผ๋ก ํ์ต๋๋ค. ์ฃผ์ด์ง ํ๋์ ํ ์คํธ ์ผ์ด์ค๋ ์ ํต๊ณผํ์ง๋ง, ์ ์ถ ํ 4~5๊ฐ์ง ์ผ์ด์ค์์ ์๊ฐ ์ด๊ณผ๊ฐ ๋ฌ์ด์. for๋ฌธ์ ์์ธ ์ ์์ผ๋ indexOf์ ๋ฌธ์ ๊ฐ์ ๊ตฌ๊ธ์ ๋์์ ๋น๋ ธ์ต๋๋ค. ๐
์๊ฐํด๋ณด๋ indexOf๋ ๋ฐฐ์ด์ ๋๋ฉฐ ํด๋น ๊ฐ์ด ์๋์ง ํ์ธํด์ผํด์ ์๊ฐ ๋ณต์ก๋๊ฐ ๊ฝค ์ฌ๋ผ๊ฐ๊ฒ ๋ค ์ถ์์ต๋๋ค.
function solution(players, callings) {
callings.forEach((val, i) => {
const index = players.indexOf(val);
const temp = players[index-1];
players[index-1] = players[index];
players[index] = temp;
})
return players;
}
ํ์ด โญ๏ธ
new Map()์ ์ด์ฉํ์ฌ ๋ฏธ๋ฆฌ ์ธ๋ฑ์ฑ์ ํด๋๊ณ , ๊ฐ์ ์ฐพ์์ฌ ๋ ๋ฐฐ์ด์ indexOf๊ฐ ์๋ hash์ get์ ์ด์ฉํด ์ฐพ์์ค๋ ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝํ์ต๋๋ค. ์ฃผ์ํด์ผ ํ ์ ์ ์ด๋ฆ์ ๋ถ๋ฅธ ์ธ๋ฑ์ค(ํ์ฌ)์ ๊ทธ ์์ ์๋ ์ธ๋ฑ์ค์ ์์น๋ฅผ ๋ณ๊ฒฝํ์๊ณ , ๊ผญ hash๋ ๋ค์ ๋ณ๊ฒฝํด์ค์ผ ํฉ๋๋ค!
function solution(players, callings) {
const hash = new Map();
players.forEach((val, i) => {
hash.set(val, i);
})
callings.forEach((val, i) => {
const index = hash.get(val);
const front = players[index-1];
const temp = players[index-1];
players[index-1] = players[index];
players[index] = temp;
hash.set(val, hash.get(val)-1);
hash.set(front, hash.get(val)+1);
})
return players;
}
'๐ค Algorithm > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ์ถ์ต ์ ์ (Javascript) (0) | 2023.05.09 |
---|