๋ฌธ์
๋ฌธ์ ์ถ์ฒ : https://school.programmers.co.kr/learn/courses/30/lessons/42862?language=javascript
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
ํ์ด ์๊ณ ๋ฆฌ์ฆ: ๊ทธ๋ฆฌ๋
๋์ด๋: LV.1
ํ์ด ์ฝ๋ ๐ก
function solution(n, lost, reserve) {
let answer = n - lost.length;
const realLost = lost.sort((a,b) => a - b).filter(item => !reserve.includes(item));
answer += lost.length - realLost.length;
const realReserve = reserve.sort((a,b) => a-b).filter(item => !lost.includes(item));
for(let i = 0; i < realLost.length; i++) {
for(let j = 0; j < realReserve.length; j++){
if(Math.abs(realLost[i] - realReserve[j]) === 1) {
answer++;
realReserve.splice(j, 1);
break;
}
}
}
return answer;
}
ํ์ด ํด์ค ๐ก
ํด๋น ๋ฌธ์ ๋ ๊ทธ๋ฆฌ๋๋ก ๊ตฌํํ ์ ์๋ ๋ฌธ์ ๋ค.
๋จผ์ lost์ reserve๋ฐฐ์ด์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ ํด์ค ํ์ lost์ reserve ๋ฐฐ์ด์์ ๊ฒน์น๋ ๊ฐ์ด ์๋ ๊ฐ๋ค๋ก๋ง ์๋ก ๋ง๋ค์ด ์ฃผ์๋ค.
๊ทธ ์ด์ ๋ ๋ค์ํ ํ ์คํธ ์ผ์ด์ค๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ธ๋ฐ,
์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ ์ ํ์ ์์๋ lost์ reserve ๋ฐฐ์ด์ ๊ฐ๋ค์ด ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฅ์ด ์ฃผ์ด์ง ๊ฑฐ๋ ๋ณด์ฅ์ด ์๊ธฐ ๋๋ฌธ์ ์์ธ๊ฐ ๋ฐ์ํ๋ค.
๊ฒน์น๋ ๊ฐ๋ค์ ์ฒ๋ฆฌ ์ ํด์ฃผ๊ฒ ๋๋ฉด
n | lost | reserve | Return |
5 | [4, 5] | [3, 4] | 4 |
์์ ๊ฐ์ ์ ๋ ฅ์ด ์ฃผ์ด์ก์ ๋ ํต๊ณผ๋ฅผ ํ์ง ๋ชปํ๊ฒ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์๋ก ์ถ์ถํ lost ๋ฐฐ์ด์ ๊ธฐ์ค์ผ๋ก ๋ฐ๋ณต๋ฌธ์ ๋๋ฆฐ๋ค.
ํด๋น ๋ฐ๋ณต๋ฌธ ์์ reserve ๋ฐฐ์ด๋ ๊ฐ์ด ๋ฐ๋ณต๋ฌธ์ ์คํํ๊ฒ ๋๋๋ฐ ๋ฌธ์ ์์ ์์ ์ ์ ๋๋ ๋ค์ ํ์์๊ฒ๋ง ๋น๋ ค์ค ์ ์๊ธฐ ๋๋ฌธ์ ์์ด๋ฒ๋ฆฐ ์ฌ๋๊ณผ ๋น๋ ค์ฃผ๋ ค๋ ์ฌ๋์ ์ฐจ์ด๊ฐ 1๋งํผ ๋๋ฉด ๋น๋ ค์ค ์ ์๊ฒ ๋๋ ๊ฒ์ด๋ค.
๋์ ์ฐจ์ด๊ฐ 1๋งํผ ๋๋ฉด answer๋ฅผ ์นด์ดํธํด์ฃผ๊ณ reserve์์ ๋น๋ ค์ค ๊ฐ์ ์ญ์ ํ๋ค.
๊ฐ์ ์ญ์ ํ๋ ์ด์ ๋ reserve ๋ฐ๋ณต๋ฌธ์ 0๋ถํฐ ์์ํ๊ฒ ๋๋๋ฐ ์ญ์ ๋ฅผ ํด์ฃผ์ง ์์ผ๋ฉด ๋น๋ ค์ค ์ฌ๋์ด ๋ ๋น๋ ค์ฃผ๊ฒ ๋๋ ์ํฉ์ด ๋ฐ์ํ๊ฒ ๋๋ค.
์์ด๋ฒ๋ฆฐ ํ์์ ๋ํด์ ์ฒด์ก๋ณต์ ๋น๋ ค์ฃผ๊ฒ๋๋ฉด reserve ๋ฐ๋ณต๋ฌธ์์ break๋ฅผ ํจ์ผ๋ก์จ ๋น ์ ธ๋์จ๋ค.
๊ฒฐ๊ณผ ์ ์ถ โ
ํด๋น ๋ฌธ์ ๋ ๋ฌธ์ ์์ ์ ์ํด ์ฃผ๋ ํ ์คํธ์ผ์ด์ค๊ฐ ์ง์ ์ ์ถ ํ์ ๋ ํ ์คํธ์ผ์ด์ค์ ๋นํด์ ์ ๋ณด๊ฐ ์ ์ด ์์ธ ์ฌํญ์ด ๋ง์ด ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ๊ณจ๋จธ๋ฆฌ๋ฅผ ์์ ๋ฌธ์ ์๋ค.