Question
์ ์ถ๋ ฅ ์์
์ ์ถ๋ ฅ ์์ ์ค๋ช
์์ #1
1๋ฒ ํ์์ด 2๋ฒ ํ์์๊ฒ ์ฒด์ก๋ณต์ ๋น๋ ค์ฃผ๊ณ , 3๋ฒ ํ์์ด๋ 5๋ฒ ํ์์ด 4๋ฒ ํ์์๊ฒ ์ฒด์ก๋ณต์ ๋น๋ ค์ฃผ๋ฉด ํ์ 5๋ช
์ด ์ฒด์ก์์
์ ๋ค์ ์ ์์ต๋๋ค.
์์ #2
3๋ฒ ํ์์ด 2๋ฒ ํ์์ด๋ 4๋ฒ ํ์์๊ฒ ์ฒด์ก๋ณต์ ๋น๋ ค์ฃผ๋ฉด ํ์ 4๋ช
์ด ์ฒด์ก์์
์ ๋ค์ ์ ์์ต๋๋ค.
My Code
์ฐธ๊ณ : ์ฝ๋์ ์งํ๊ณผ์ ์ ๋ณผ ์ ์๋ค ๐
์ฝ๋ ์คํํ์ ๋ ํต๊ณผํ์ง๋ง ํ ์คํธ ์ผ์ด์ค์ ๊ฑธ๋ ค ์คํจํ ์ฝ๋์ด๋ค.
function solution(n, lost, reserve) {
let lostLength = lost.length;
let answer = n - lostLength;
let arr = [];
for (let i = 0 ; i < lostLength ; i ++) {
if (reserve.includes(lost[i] - 1 )) {
answer += 1 ;
reserve = reserve.filter ((ele) => ele !== lost[i] - 1 )
}
else if (reserve.includes(lost[i] + 1)) {
answer += 1;
reserve = reserve.filter((ele) => ele !== lost[i] + 1)
}
}
return answer;
}
WHY?
lost์ reserve์ ๋๋ค ์ํด์๋ ํ์์๋ฅผ ๊ณ ๋ คํ์ง ์์๋ค.
๋ง์ฝ์ ๋๋ค ์ํด ์๋ค๋ฉด ๊ฒฐ๊ตญ์๋ ๋น๋ ค์ค ์ฒด์ก๋ณต์ ์๊ณ ์์ ์ ์ฒด์ก๋ณต๋ง ์ ์ ์ ์๋ ๊ฒฝ์ฐ์ด๋ฏ๋ก
reserve์ lost์์ ์ญ์ ํ๊ณ ์ฒด์ก์์ ์ ๋ค์ ์ ์๋ ์ธ์์์ ์ถ๊ฐํด์ผ ํ๋ค.
ํญ์ ์ด๋ฐ ๊ฒฝ์ฐ์์๋ฅผ ๊น๋จน๋๋ค! ์์ง ๋ง์!
์ถ๊ฐํ๋๋ฐ ๋ ํ๋ ธ๋ค.
function solution(n, lost, reserve) {
let lostLength = lost.length;
let answer = n - lostLength;
// ์ฒด์ก๋ณต๋ ์์ด๋ฒ๋ฆฌ๊ณ ์ฌ๋ถ์ ์ฒด์ก๋ณต๋ ๋์์ ์๋ ๊ฒฝ์ฐ
for (let i = 0; i < lostLength ; i ++) {
if (reserve.includes(lost[i])) {
reserve = reserve.filter((ele) => ele !== lost[i])
answer += 1;
} else {
tmp.push(lost[i]);
}
}
for (let i = 0 ; i < lostLength ; i ++) {
if (reserve.includes(lost[i] - 1 )) {
answer += 1 ;
reserve = reserve.filter ((ele) => ele !== lost[i] - 1 )
}
else if (reserve.includes(lost[i] + 1)) {
answer += 1;
reserve = reserve.filter((ele) => ele !== lost[i] + 1)
}
}
return answer;
}
WHY?
๊ตฌ๊ธ๋ง์ ํด๋ณด๋ ํ ์คํธ ์ผ์ด์ค๊ฐ ์ ๋ ฌํด์ ๋ค์ด์ค์ง ์๋ ๊ฒฝ์ฐ๊ฐ ์๋ค๊ณ ํ๋ค.
์๋ ํ ์คํธ ์ผ์ด์ค์ผ ๊ทธ๋ฐ ๊ฑฐ๊น์ง ์ผ์ผ์ด ๋ง ์ ํด์ฃผ์์๋?
๋ด๊ฐ ๊ทธ๊ฑธ ์ด๋ป๊ฒ ์๋? ๐คทโ๏ธ
sort() ํจ์๋ฅผ ์ถ๊ฐํ๊ณ ๋ชจ๋ ํ ์คํธ ์ผ์ด์ค๋ฅผ ํต๊ณผํ๋ค.
์๋๊ฐ ๋ชจ๋ ํ ์คํธ์ผ์ด์ค๋ฅผ ํต๊ณผํ ์ฝ๋!
function solution(n, lost, reserve) {
let lostLength = lost.length;
let answer = n - lostLength;
let tmp = [];
// ์ฒด์ก๋ณต๋ ์์ด๋ฒ๋ฆฌ๊ณ ์ฌ๋ถ์ ์ฒด์ก๋ณต๋ ๋์์ ์๋ ๊ฒฝ์ฐ
for (let i = 0; i < lostLength ; i ++) {
if (reserve.includes(lost[i])) {
reserve = reserve.filter((ele) => ele !== lost[i])
answer += 1;
} else {
tmp.push(lost[i]);
}
}
// ์์์ ์๊ด์์ด ๋ค์ด์ฌ ์
๋ ฅ์ ๋๋นํด ์ ๋ ฌํด์ค
lost = tmp.sort();
for (let i = 0 ; i < lostLength ; i ++) {
if (reserve.includes(lost[i] - 1 )) {
answer += 1 ;
reserve = reserve.filter ((ele) => ele !== lost[i] - 1 )
}
else if (reserve.includes(lost[i] + 1)) {
answer += 1;
reserve = reserve.filter((ele) => ele !== lost[i] + 1)
}
}
return answer;
}
๋ค๋ฅธ ์ฌ๋์ ํ์ด ์ค์ ์์ฒญ๋ ๊ฑธ ๋ฐ๊ฒฌํ๋ค!
๊ฐ๋ ์ฑ๋ ์ข๊ณ ์ง์ง ๊น๋ํ ์ฝ๋!
์ด๋ณด์ธ ๋ด๊ฐ ๋ด๋ ๊ด์ฐฎ์ ์ฝ๋!
๊ทธ๋์ ๊ฐ์ ธ์๋ดค๋ค.
(ํน์ ๋ฌธ์ ๊ฐ ๋๋ค๋ฉด ๋๊ธ๋ก ๊ผญ ์๋ ค์ฃผ์๊ธธ)
function solution(n, lost, reserve) {
const realReserve = reserve.filter(r => !lost.includes(r));
const realLost = lost.filter(r => !reserve.includes(r));
// const reserveNum = reserve.lenght - realReserve.length;
const ableNum = realLost.filter(a => {
return realReserve.find((b, i) => {
const has = b === a-1 || b === a+1;
if (has) {
delete realReserve[i];
}
return has;
});
}).length;
return n - (realLost.length - ableNum);
}
์ถ์ฒ : ํ๋ก๊ทธ๋๋จธ์ค / - , chifuyu1 , doi-h , Five1star , seo2im ์ธ 6๋ช ์ด ํผ ์ฝ๋
์ด ์ฝ๋๋ฅผ ์ ์ข๋ค๊ณ ๋๋ ๊ฒ์ผ๊น?
- ๊ฐ๋ ์ฑ์ด ์ข๋ค.
- ๋ฉ์๋๋ฅผ ์ ์ ํ๊ฒ ํ์ฉํ๋ค.
- ์ค๋ณต๋๊ฑฐ๋ ๋น์ทํ ์ฝ๋๊ฐ ์๋ค.
- ์ด๋ค ๊ธฐ๋ฅ์ ์ํํ๋์ง ์ดํด๊ฐ ๊ฐ๋ค.
- delete๋ผ๋ ์ฐ์ฐ์๋ฅผ ์์๋๋ค.
์ถ๊ฐ๋ ํ ์คํธ ์ผ์ด์ค๋ค ์ค์ ํต๊ณผ ์ ๋๋ ๋ถ๋ถ์ด ์์ง๋ง
์ฝ๋๋ฅผ ์ด๋ ๊ฒ ์ธ ์๋ ์๊ตฌ๋ ๋ฐฐ์ฐ๊ฒ ๋๋ค.
๋๋ ํ์ฉํ ์ ์๋๋ก ๊ณ์ํด์ ๋ง์ ์ฝ๋๋ฅผ ๋ด์ผ๊ฒ ๋ค.
์ฝ๋์ ์ ๋ต์ด ์๋ค๋ ๊ฒ ์ฌ๋ฐ๋ค.
๋ด๊ฐ ๋ง๋ค์ด ๋ผ ์ ์๋ค๋ ๊ฒ์ ์๊ณ ๊ฐ๋ค.
'Algorithms > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] ํ๋ก๊ทธ๋๋จธ์ค : ์์ฐ์ ๋ค์ง์ด ๋ฐฐ์ด๋ก ๋ง๋ค๊ธฐ (0) | 2022.05.22 |
---|---|
[JS] ํ๋ก๊ทธ๋๋จธ์ค : ์ด์ํ ๋ฌธ์ ๋ง๋ค๊ธฐ (0) | 2022.05.20 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค : ์ ์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋ฐฐ์นํ๊ธฐ (0) | 2022.05.17 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค : ํ์ค๋ ์ (0) | 2022.05.14 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค : ์ฝ๋ผ์ธ ์ถ์ธก (0) | 2022.05.13 |