๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[์ฝ”๋”ฉํ…Œ์ŠคํŠธ] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๊ฐœ์ธ์ •๋ณด ์ˆ˜์ง‘ ์œ ํšจ๊ธฐ๊ฐ„ ํ’€์ด (JavaScript)

by ๋‰ด์ชผ๋ฏธ 2026. 3. 17.

1. ๋ฌธ์ œ ์„ค๋ช…

์ด ๋ฌธ์ œ๋Š” ๊ฐœ์ธ์ •๋ณด ์ˆ˜์ง‘ ๋‚ ์งœ์™€ ์•ฝ๊ด€ ์ข…๋ฅ˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ,
์˜ค๋Š˜ ๋‚ ์งœ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํŒŒ๊ธฐํ•ด์•ผ ํ•˜๋Š” ๊ฐœ์ธ์ •๋ณด์˜ ๋ฒˆํ˜ธ๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์กฐ๊ฑด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์•ฝ๊ด€๋งˆ๋‹ค ์œ ํšจ๊ธฐ๊ฐ„(๊ฐœ์›” ์ˆ˜)์ด ๋‹ค๋ฆ„
  • ๋ชจ๋“  ๋‹ฌ์€ 28์ผ๋กœ ๊ณ„์‚ฐ
  • ๊ฐœ์ธ์ •๋ณด๋Š” ์•ฝ๊ด€ ์œ ํšจ๊ธฐ๊ฐ„์ด ์ง€๋‚œ ๊ฒฝ์šฐ ํŒŒ๊ธฐ ๋Œ€์ƒ
  • ํŒŒ๊ธฐํ•ด์•ผ ํ•˜๋Š” ๊ฐœ์ธ์ •๋ณด์˜ ์ธ๋ฑ์Šค(1๋ถ€ํ„ฐ ์‹œ์ž‘) ๋ฅผ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜

2. ์ฒ˜์Œ์— ํ—ท๊ฐˆ๋ฆฌ๋Š” ํฌ์ธํŠธ

์ด ๋ฌธ์ œ๋Š” ๋‚ ์งœ๊ฐ€ ๋‚˜์˜ค๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜์Œ์—๋Š” Date ๊ฐ์ฒด๋กœ ํ’€๊ณ  ์‹ถ์–ด์ง‘๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด:

 
new Date("2022.05.19")
 

์ด๋Ÿฐ ์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹ถ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด ๋ฌธ์ œ๋Š” ์‹ค์ œ ๋‹ฌ๋ ฅ ๊ธฐ์ค€์ด ์•„๋‹ˆ๋ผ,
๋ฌธ์ œ ์•ˆ์—์„œ ๋”ฐ๋กœ ์ •ํ•œ ๊ทœ์น™์„ ๋”ฐ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.


์™œ 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