https://school.programmers.co.kr/learn/courses/30/lessons/64064
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
ํ๋ก๊ทธ๋๋จธ์ค ๋ ๋ฒจ 3.
2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด์ญ ๊ธฐ์ถ ๋ฌธ์ ์ด๋ค
์์์๊ฐ 1์๊ฐ ์ด์ ,,,
์ฒ์์ ๋ดค์๋ ์ฌ์๋ณด์๋๋ฐ, ๊ฝค ์ค๋ ์ฝ์งํ๋ค. ๊ฐ๋จํ ๋ฌธ์ ๊ฐ ์๋๋ค......
ํ์ง๋ง ์๋ฆฌ๋ง ์ดํดํ๋ค๋ฉด ๊ธ๋ฐฉ ํ ์ ์์๋ฏ!!
ํ์ด ์์
1. ์ฒซ ์๋ ์คํจ
=> ๋จ์ ๋ฌธ์์ด ๋น๊ต์ธ ์ค ์๊ณ ์ผ์ค ๋ฐ๋ณต๋ฌธ์ ์ผ์ผ๋, ์ค๋ณต์ด ํ์ฉ๋์ง ์๊ณ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ํ์ํด์ผ ํ๋ ์กฐํฉ ๋ฌธ์ ์์
2. ํํธ get
=> dfs๋ก ํ์ด์ผ ํ๋ค๋ ํํธ๋ฅผ ์ป์๊ณ .... ์๋ฌด๋ฆฌ ๋จธ๋ฆฌ๋ฅผ ์จ๋ ์ dfs๋ฅผ ์จ์ผํ๋๊ฑด์ง ์ดํด๊ฐ ์๋จ
๊ทธ๋์ GPT ๋ถ์ก๊ณ ๊ณ์ ์ฝ์งํ๋ค
3. ์ดํด ์ฑ๊ณต
=> banned_id[0]์ ๋งค์นญ๋๋ ํ ๊ฐ์ง ๊ฒฝ์ฐ๋ฅผ ์ฐพ์์ ๋, ๊ทธ ๋ค์ ์ธ๋ฑ์ค๋ถํฐ ๋ค์ ํ์์ ํด์ผํ๊ณ
ํ ๊ฐ์ง ๊ฒฝ์ฐ์ ํ์์ด ๋๋๋ฉด banned_id[0]์ ๋งค์นญ๋๋ ๋ค๋ฅธ ๊ฒฝ์ฐ์ ํ์๋ ์งํํ๊ธฐ์
๊ฒฝ์ฐ์ ์๋ฅผ ์ฐพ๊ธฐ ์ํด ๊น์ด์ฐ์ ํ์์ ์งํํ๋ ๊ฒ!
=> ๊ทธ๋ฆฌ๊ณ ์ค๋ณต์ด ํ์ฉ๋์ง ์์ง๋ง, Set์ ๋ฐฐ์ด์ ๋น๊ตํ ๋ ์์๊ฐ ๋ค๋ฅด๋ค๋ฉด ๋ค๋ฅธ ์์๋ก ์ธ์ํจ.
๋ฐ๋ผ์ Set์ผ๋ก ํํฐ๋งํ ๋ ans_arr์ ๋ด๋ถ ์์๋ฅผ ์ ๋ ฌ ํ ๋ฌธ์์ด๋ก ํฉ์ณ์ฃผ์๋ค.
๋์ ํ์ด
let answer = 0;
var ans_arr = [];
const isMatch=(ban, id)=>{
if(!ban || !id) return false;
if(ban.length===id.length){
for(let i=0; i<ban.length; ++i){
if(ban[i]=="*" || ban[i] === id[i]){
continue;
}
else return false;
}
return true;
}
return false;
}
const dfs=(ban_list, users, ban_result)=>{
if(ban_list.length === ban_result.length) {
// console.log(ban_result)
ans_arr.push(ban_result);
return;
}
let ban = ban_list[ban_result.length];
for(let i=0; i<users.length; ++i){
if(isMatch(ban, users[i])){
// console.log(ban, users[i]);
dfs(ban_list, users.filter((_, idx) => idx !== i),
[...ban_result, users[i]]);
}
}
}
function solution(user_id, banned_id) {
let remain_users = [...user_id];
let ban_list = [...banned_id];
dfs(ban_list, remain_users, []);
// console.log(ans_arr);
answer = Array.from(new Set(ans_arr.map(x=>x.sort().join(',')))).length;
return answer;
}
'๐ ์๊ณ ๋ฆฌ์ฆ > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Javascript/PGS] Lv.3 : ๋ณด์ ์ผํ (0) | 2025.03.20 |
---|---|
[Javascript/PGS] Lv.3 : ๋ถ๋๋ณต๊ท (0) | 2025.03.20 |
[Javascript/PGS] Lv.2 : ์ฃผ์ฐจ ์๊ธ ๊ณ์ฐ(2022 KAKAO BLIND RECRUITMENT) (0) | 2025.03.19 |
[MySQL/PGS] Lv.1 : ์ก์ ๋ฌผ๊ณ ๊ธฐ์ ํ๊ท ๊ธธ์ด ๊ตฌํ๊ธฐ (0) | 2025.03.16 |
[MySQL/PGS] Lv.3 : ์ ๊ทธ๋ ์ด๋ ํ ์ ์๋ ์์ดํ ๊ตฌํ๊ธฐ (0) | 2025.03.16 |