1. ๋ฌธ์ ์ค๋ช
์ด ๋ฌธ์ ๋ ๊ฐ์ธ์ ๋ณด ์์ง ๋ ์ง์ ์ฝ๊ด ์ข
๋ฅ๊ฐ ์ฃผ์ด์ก์ ๋,
์ค๋ ๋ ์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๊ธฐํด์ผ ํ๋ ๊ฐ์ธ์ ๋ณด์ ๋ฒํธ๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์
๋๋ค.
์กฐ๊ฑด์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ฝ๊ด๋ง๋ค ์ ํจ๊ธฐ๊ฐ(๊ฐ์ ์)์ด ๋ค๋ฆ
- ๋ชจ๋ ๋ฌ์ 28์ผ๋ก ๊ณ์ฐ
- ๊ฐ์ธ์ ๋ณด๋ ์ฝ๊ด ์ ํจ๊ธฐ๊ฐ์ด ์ง๋ ๊ฒฝ์ฐ ํ๊ธฐ ๋์
- ํ๊ธฐํด์ผ ํ๋ ๊ฐ์ธ์ ๋ณด์ ์ธ๋ฑ์ค(1๋ถํฐ ์์) ๋ฅผ ๋ฐฐ์ด๋ก ๋ฐํ
2. ์ฒ์์ ํท๊ฐ๋ฆฌ๋ ํฌ์ธํธ
์ด ๋ฌธ์ ๋ ๋ ์ง๊ฐ ๋์ค๊ธฐ ๋๋ฌธ์ ์ฒ์์๋ Date ๊ฐ์ฒด๋ก ํ๊ณ ์ถ์ด์ง๋๋ค.
์๋ฅผ ๋ค์ด:
์ด๋ฐ ์์ผ๋ก ์ฒ๋ฆฌํ๊ณ ์ถ์ ์ ์์ต๋๋ค.
ํ์ง๋ง ์ด ๋ฌธ์ ๋ ์ค์ ๋ฌ๋ ฅ ๊ธฐ์ค์ด ์๋๋ผ,
๋ฌธ์ ์์์ ๋ฐ๋ก ์ ํ ๊ท์น์ ๋ฐ๋ผ์ผ ํฉ๋๋ค.
์ Date๋ณด๋ค ์ง์ ๊ณ์ฐ์ด ๋ ์ข์๊ฐ?
๋ฌธ์ ์์ ๋ช ํํ๊ฒ ๋งํ๋ ๊ท์น์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- 1๋ = 12๊ฐ์
- 1๊ฐ์ = 28์ผ
์ฆ ์ค์ ๋ฌ๋ ฅ์ฒ๋ผ
- ์ด๋ค ๋ฌ์ 30์ผ
- ์ด๋ค ๋ฌ์ 31์ผ
- 2์์ 28์ผ ๋๋ 29์ผ
์ด๋ ๊ฒ ๊ณ์ฐํ๋ฉด ์ ๋ฉ๋๋ค.
๊ทธ๋์ ์ด ๋ฌธ์ ๋ Date ๊ฐ์ฒด๋ณด๋ค
๋ ์ง๋ฅผ ์ง์ ์ซ์๋ก ๋ฐ๊ฟ์ ๋น๊ตํ๋ ๋ฐฉ์์ด ๋ ์ ํํ๊ณ ๊ฐ๋จํฉ๋๋ค.
3. ํ์ด ์์
์ด ๋ฌธ์ ๋ ์๋ ์์๋ก ํ๋ฉด ๋ฉ๋๋ค.
1) ์ค๋ ๋ ์ง๋ฅผ ์ด ์ผ์๋ก ๋ณํ
๋น๊ต ๊ธฐ์ค์ด ๋๋ ์ค๋ ๋ ์ง๋ฅผ ์ซ์๋ก ๋ฐ๊ฟ๋๋ค.
2) ์ฝ๊ด ์ ๋ณด๋ฅผ Map์ผ๋ก ์ ์ฅ
์๋ฅผ ๋ค์ด: ["A 6", "B 12", "C 3"] ์ด๋ฐ ๋ฐ์ดํฐ๋ฅผ
A -> 6
B -> 12
C -> 3
ํํ๋ก ์ ์ฅํ๋ฉด ์ฝ๊ด๋ณ ๊ฐ์ ์๋ฅผ ๋น ๋ฅด๊ฒ ๊บผ๋ผ ์ ์์ต๋๋ค.
3) ๊ฐ์ธ์ ๋ณด๋ฅผ ํ๋์ฉ ํ์ธ
๊ฐ ๊ฐ์ธ์ ๋ณด๋ง๋ค
- ์์ง ๋ ์ง
- ์ฝ๊ด ์ข ๋ฅ
๋ฅผ ๋ถ๋ฆฌํฉ๋๋ค.
4) ๋ง๋ฃ ๊ธฐ์ค ๊ณ์ฐ
์์ง ๋ ์ง์ ์ฝ๊ด ๊ฐ์ ์ × 28์ผ์ ๋ํฉ๋๋ค.
5) ์ค๋ ๋ ์ง์ ๋น๊ต
๋ง๋ฃ ๊ธฐ์ค์ผ์ด ์ค๋๊ณผ ๊ฐ๊ฑฐ๋ ์ด์ ์ด๋ฉด ํ๊ธฐ ๋์์ ๋๋ค.
4. ์ ๋ต ์ฝ๋
function solution(today, terms, privacies) {
const answer = [];
const toDays = (date) => {
const [y, m, d] = date.split('.').map(Number);
return y * 12 * 28 + m * 28 + d;
};
const todayDays = toDays(today);
const termsMap = new Map(
terms.map((item) => {
const [key, value] = item.split(" ");
return [key, Number(value)];
})
);
privacies.forEach((item, index) => {
const [date, type] = item.split(" ");
const checkDays = toDays(date) + termsMap.get(type) * 28;
if (checkDays <= todayDays) {
answer.push(index + 1);
}
});
return answer;
}
5. ์์์ผ ํ ๋ฉ์๋ / ๋ฌธ๋ฒ
split()
๋ฌธ์์ด์ ํน์ ๊ธฐ์ค์ผ๋ก ๋๋๋ ๋ฉ์๋์ ๋๋ค.
"2022.05.19".split(".")
๊ฒฐ๊ณผ:["2022", "05", "19"]โ
map()
๋ฐฐ์ด์ ๊ฐ ์์๋ฅผ ๋ณํํด์ ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋๋ ๋ฉ์๋์ ๋๋ค.
["2022", "05", "19"].map(Number)
๊ฒฐ๊ณผ:[2022, 5, 19]
Number()
๋ฌธ์์ด์ ์ซ์๋ก ๋ณํํ๋ ํจ์์ ๋๋ค.
Number("6") // 6
Map
ํค-๊ฐ ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค.
const map = new Map([
["A", 6],
["B", 12]
]);
๊ฐ ์กฐํ:map.get("A"); // 6