๐พ๋ค์ด๊ฐ๋ฉฐ
์์ฆ ์์นจ์ ํ๋ก๊ทธ๋๋จธ์ค 2๋ฌธ์ ๋ฅผ ํ๊ธฐ๋ก ํ๋๋ฐ, ์ด์ 2๋ฌธ์ ์ค ํ ๋ฌธ์ ์์ ๋งํ ๋ฌ์ฑํ์ง ๋ชปํ์ต๋๋ค. ์ค๋ ๋ฐ๋ก ๋ค์ ์๋ํ๊ณ ์๋๋ฐ, ์๋ฌด๋ฆฌ ๋ฐ๋ก๋ฅผ ์ฐพ์์ ๋ฃ์ด๋ด๋ ํต๊ณผ๊ฐ ๋๋ ๊ฒ์ ๋๋ค... ๋ถ๋ช 70์ ์ด ๋์ค๊ณ ์๋๋ฐ ๋ง์ด์ฃ ใ ใ ๊ทธ๋ฌ๋ค๊ฐ ์ค๋งํ๊ณ ๊ณ ์น์ง ์๊ณ ์๋ ๋ถ๋ถ์ ๋ฐ๊ฟ๋ณด์๋๋ฐ, ๋๋์ด! ํต๊ณผ๊ฐ ๋์ด ๋ฟ๋ฏํจ์ ๊ธ๋ก ๋จ๊น๋๋ค.
โจ๋ณธ๊ฒฉ์ ์ผ๋ก
๋ฌธ์
์ค๋ ๋ ์ง๋ฅผ ์๋ฏธํ๋ ๋ฌธ์์ด today : YYYY.MM.DD
์ฝ๊ด์ ์ ํจ๊ธฐ๊ฐ์ ๋ด์ 1์ฐจ์ ๋ฌธ์์ด ๋ฐฐ์ด terms : ์ฝ๊ด์ข
๋ฅ(A ~ Z) ์ ํจ๊ธฐ๊ฐ ( 1 ~ 100)
์์ง๋ ๊ฐ์ธ์ ๋ณด์ ์ ๋ณด๋ฅผ ๋ด์ 1์ฐจ์ ๋ฌธ์์ด ๋ฐฐ์ด privacies : ๋ ์ง(YYYY.MM.DD) ์ฝ๊ด์ข
๋ฅ
ํ๊ธฐํด์ผ ํ ๊ฐ์ธ์ ๋ณด์ ๋ฒํธ๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก 1์ฐจ์ ์ ์ ๋ฐฐ์ด์ ๋ด์ return
์ฃผ์ํ ์ : 1 ≤ DD ≤ 28
์ฒ์์ ์ฃผ์ํ ์ ์ ๋ชป ๋ณธ ์ฑ๋ก ๊ณ์ฐํ๋ค๊ณ ํ๋ฆฌ๊ณ , 12๊ฐ์ ํ์ ์ผ์๊ฐ -1์ด ๋๋ ์ ์์ ํ๋ฆฌ๊ณ .. ์ญ์ ๋ฌธ์ ๋ฅผ ์ ์ฝ์ด๋ด์ผ๊ฒ ๋ค๊ณ ์ค๋๋ ๋ค์งํฉ๋๋ค.
ํ์ด ๊ณํ
- ์ ํจ๊ธฐ๊ฐ / 12 = ๋
- ์ ํจ๊ธฐ๊ฐ % 12 = ์
- ์ ํจ๊ธฐ๊ฐ -> 00.00์ ์ซ์๋ก ์นํ
- privacies์ YYYY.MM + 00.00 + ".DD" ์ today ๋น๊ต
- ์ฐ๋, ์, ๋ ์ง ์์๋๋ก ๋น๊ตํ๋ฉด์ break ๊ฑธ๊ธฐ
ํ์ด
- ์ ๋ ฅ๊ฐ์ ํธํ ๋ฐฉ๋ฒ์ผ๋ก ๋ณ๊ฒฝํ๊ธฐ
์ ๋ ฅ์ผ๋ก today, terms, privacies๊ฐ ๋ค์ด์ค๋๋ฐ, terms๊ฐ ๋ฐฐ์ด์ด ์๋ ์์ ์๋ ์ํ๋ฒณ์ ํค๋ก ๊ฐ์ง ๊ฐ์ฒด๋ก ํ๋ฉด ๋น ๋ฅด๊ฒ ๊ฒ์ํ ์ ์๊ฒ ๋๋ฏ๋ก, terms๋ฅผ ๊ฐ์ฒด๋ก ๋ณ๊ฒฝํ์ต๋๋ค.
terms = terms.map(t => t.split(" "));
const obj = {};
terms.forEach(t =>{
obj[t[0]] = +t[1];
})
๊ทธ๋ฆฌ๊ณ today๋ ๋น๊ต๋ฅผ ์ํด ๋ค์์ฒ๋ผ ์ชผ๊ฐ๋ ์์ ์ ํ์ต๋๋ค.
const [ty, tm, td] = today.split(".").map(t => +t);
์ด์ privacies๋ฅผ ๋๋ฉด์ ๋ ์ง๋ฅผ ๊ณ์ฐํด์ค๋๋ค.
privacies.forEach((p,i)=>{
const [year, month, day] = p[0].split(".").map(r => +r);
const value = obj[p[1]];
const idx = value % 12;
let aday = day - 1;
let amonth = month + idx;
let ayear = year + Math.floor(value / 12);
if(aday === 0){
aday = 28;
amonth -= 1;
}
if(amonth > 12){
ayear = ayear + Math.floor(amonth / 12);
amonth = amonth % 12 === 0 ? 12 : amonth % 12;
}
if(amonth <= 0){
amonth = amonth + 12;
ayear -= 1;
}
})
์ฌ๋ฌ if ๋ฌธ๋ค์ด ๋ณด์ด์ง๋ง ๋์ด๊ฐ์ฃผ์ธ์... while๋ก ํ๋ค๊ฐ ๋ ๋ณต์กํด์ง๋ ๊ฒ ๊ฐ์์ ๊ฐ๋จํ๊ฒ ์ฒ๋ฆฌํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ ๊ฒ ๊ณ์ฐํ ๋ ์ง์ ์ค๋ ๋ ์ง๋ฅผ ๋น๊ตํด์ค๋๋ค. ์๋๋ ๋น๊ต์ ๋๋ถ์ด ์์ ์ฝ๋๋ฅผ ํฉ์ณ์ ๋ณด์ฌ๋๋ฆฝ๋๋ค.
function solution(today, terms, privacies) {
const [ty, tm, td] = today.split(".").map(t => +t);
terms = terms.map(t => t.split(" "));
const obj = {};
terms.forEach(t =>{
obj[t[0]] = +t[1];
})
privacies = privacies.map(p => p.split(" "));
const trash = [];
privacies.forEach((p,i)=>{
const [year, month, day] = p[0].split(".").map(r => +r);
const value = obj[p[1]];
const idx = value % 12;
let aday = day - 1;
let amonth = month + idx;
let ayear = year + Math.floor(value / 12);
if(aday === 0){
aday = 28;
amonth -= 1;
}
if(amonth > 12){
ayear = ayear + Math.floor(amonth / 12);
amonth = amonth % 12 === 0 ? 12 : amonth % 12;
}
if(amonth <= 0){
amonth = amonth + 12;
ayear -= 1;
}
//์ค๋๋ ์ง์ ๋น๊ตํ๊ธฐ
const isBigDay = td < aday;
const isBigMonth = tm < amonth;
const isBigYear = ty < ayear;
switch(true){
case isBigYear:
break;
case isBigMonth:
if(ty === ayear) break;
case isBigDay:
if(tm === amonth) break;
default:
if(ty === ayear && tm === amonth && td === aday){}
else trash.push(i + 1)
}
})
return trash;
}
๋ฌธ์ ๋... ์๋ฌด๋ฆฌ ๋ฐ๋ก๋ฅผ ์ถ๊ฐํด๋ ๋ง์น ๋ฒฝ์ด ์๋ ๊ฒ๋ง๋ฅ ํต๊ณผ๊ฐ ๋์ง ์์์ต๋๋ค..
๊ทธ๋์ ๋น๊ตํ๋ ๋ถ๋ถ์ด ๋ฌธ์ ๊ฒ ๊ตฌ๋..ํ๊ณ ๋ฏธ๋ค๋๋ ์์ ๋ฅผ ๊บผ๋์ต๋๋ค. ์์ ์ฝ๋์์๋ ์ซ์๋ก ์ฐ๋, ๋ฌ, ์ผ์ ํ๋์ฉ ๋น๊ตํด์ฃผ๊ณ ์์ต๋๋ค. ์ฌ๊ธฐ์์ ๊ฐ์๊ธฐ ์ข์ ์์ด๋์ด๊ฐ ๋ ์ฌ๋๋๋ฐ, ๋ฐ๋ก, ๋ฌธ์์ด๋ก ๋น๊ตํ๋ ๊ฒ์ ๋๋ค.
//๊ธฐ์กด ์ฝ๋
const isBigDay = td < aday;
const isBigMonth = tm < amonth;
const isBigYear = ty < ayear;
switch(true){
case isBigYear:
break;
case isBigMonth:
if(ty === ayear) break;
case isBigDay:
if(tm === amonth) break;
default:
if(ty === ayear && tm === amonth && td === aday){}
else trash.push(i + 1)
}
//๋ฌธ์์ด๋ก ๋น๊ตํ๊ธฐ
const after =`${ayear}.${String(amonth).padStart(2, "0")}.${String(aday).padStart(2, "0")}`;
const between = [today, after];
between.sort();
if(between[1] === today && today != after) trash.push(i+1)
ํจ์ฌ ๋ ๊ฐ๋จํด์ง ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ .. ๋ฌธ์ ๋ ํต๊ณผํ์ต๋๋คใ ใ
โ๏ธ๊ฒฐ๋ก
๋น๊ต ์กฐ๊ฑด์ด ์ ํํ ์ข ๊น๋ค๋กญ์ต๋๋ค. ๋งค๋ฒ ์๊ฐํ ๋๋ง๋ค ๋ ๋ณต์กํด์ง๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๋ฒ์ ํ๋ณํ์ ํตํด์ ์ฝ๊ฒ ๋น๊ตํ๋ ๋ฐฉ๋ฒ์ ๊นจ๋ฌ์ ์ ์๋ ๋ฌธ์ ์์ต๋๋ค.
'Create' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Matter.js] What's the matter??? (1) | 2024.06.11 |
---|---|
[์๊ณ ๋ฆฌ์ฆ] ๋ ๊ทธ๋๋ ํ๊ธด ํ์์ด...? (1) | 2024.05.30 |
[React] ์ ๋ฐ์ํ ํ ์คํธ๋ฐ์ค๋ ์คํ์ผ๋ก ๋ง๋๋๊ฐ? (0) | 2024.05.11 |
[React] ๋ฆฌํฉํ ๋ง - ๋ฐ์ดํฐ/์ก์ /๊ณ์ฐ์ผ๋ก ๋ถ๋ฆฌํ๊ณ ์ฟผ๋ฆฌ ์คํธ๋ง์ ์ฌ์ฉํ์ (0) | 2024.05.08 |
[React] ์ปดํฌ๋ํธ๋ ํ ๋ฒ์ ํ๋์ ์ฑ ์๋ง ์ง๋ค. (0) | 2024.05.05 |