
๐งก๋ฌธ์  ์ค๋ช
๊ณ ๊ฐ์ ์ฝ๊ด ๋์๋ฅผ ์ป์ด์ ์์ง๋ 1~n๋ฒ์ผ๋ก ๋ถ๋ฅ๋๋ ๊ฐ์ธ์ ๋ณด n๊ฐ๊ฐ ์์ต๋๋ค. ์ฝ๊ด ์ข
๋ฅ๋ ์ฌ๋ฌ ๊ฐ์ง ์์ผ๋ฉฐ ๊ฐ ์ฝ๊ด๋ง๋ค ๊ฐ์ธ์ ๋ณด ๋ณด๊ด ์ ํจ๊ธฐ๊ฐ์ด ์ ํด์ ธ ์์ต๋๋ค. ๋น์ ์ ๊ฐ ๊ฐ์ธ์ ๋ณด๊ฐ ์ด๋ค ์ฝ๊ด์ผ๋ก ์์ง๋๋์ง ์๊ณ  ์์ต๋๋ค. ์์ง๋ ๊ฐ์ธ์ ๋ณด๋ ์ ํจ๊ธฐ๊ฐ ์ ๊น์ง๋ง ๋ณด๊ด ๊ฐ๋ฅํ๋ฉฐ, ์ ํจ๊ธฐ๊ฐ์ด ์ง๋ฌ๋ค๋ฉด ๋ฐ๋์ ํ๊ธฐํด์ผ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, A๋ผ๋ ์ฝ๊ด์ ์ ํจ๊ธฐ๊ฐ์ด 12 ๋ฌ์ด๊ณ , 2021๋
 1์ 5์ผ์ ์์ง๋ ๊ฐ์ธ์ ๋ณด๊ฐ A์ฝ๊ด์ผ๋ก ์์ง๋์๋ค๋ฉด ํด๋น ๊ฐ์ธ์ ๋ณด๋ 2022๋
 1์ 4์ผ๊น์ง ๋ณด๊ด ๊ฐ๋ฅํ๋ฉฐ 2022๋
 1์ 5์ผ๋ถํฐ ํ๊ธฐํด์ผ ํ  ๊ฐ์ธ์ ๋ณด์
๋๋ค.
๋น์ ์ ์ค๋ ๋ ์ง๋ก ํ๊ธฐํด์ผ ํ  ๊ฐ์ธ์ ๋ณด ๋ฒํธ๋ค์ ๊ตฌํ๋ ค ํฉ๋๋ค.
๋ชจ๋ ๋ฌ์ 28์ผ๊น์ง ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
๋ค์์ ์ค๋ ๋ ์ง๊ฐ 2022.05.19์ผ ๋์ ์์์
๋๋ค.
| ์ฝ๊ด ์ข ๋ฅ | ์ ํจ๊ธฐ๊ฐ | 
|---|---|
| A | 6๋ฌ | 
| B | 12 ๋ฌ | 
| C | 3 ๋ฌ | 
| ๋ฒํธ | ๊ฐ์ธ์ ๋ณด ์์ง ์ผ์ | ์ฝ๊ด ์ข ๋ฅ | 
|---|---|---|
| 1 | 2021.05.02 | A | 
| 2 | 2021.07.01 | B | 
| 3 | 2022.02.19 | C | 
| 4 | 2022.02.20 | C | 
๋ฐ๋ผ์ ํ๊ธฐํด์ผ ํ ๊ฐ์ธ์ ๋ณด ๋ฒํธ๋ [1, 3]์ ๋๋ค.
์ค๋ ๋ ์ง๋ฅผ ์๋ฏธํ๋ ๋ฌธ์์ด today, ์ฝ๊ด์ ์ ํจ๊ธฐ๊ฐ์ ๋ด์ 1์ฐจ์ ๋ฌธ์์ด ๋ฐฐ์ด terms์ ์์ง๋ ๊ฐ์ธ์ ๋ณด์ ์ ๋ณด๋ฅผ ๋ด์ 1์ฐจ์ ๋ฌธ์์ด ๋ฐฐ์ด privacies๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ์ด๋ ํ๊ธฐํด์ผ ํ  ๊ฐ์ธ์ ๋ณด์ ๋ฒํธ๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก 1์ฐจ์ ์ ์ ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
๐์ ํ์ฌํญ
today๋ "YYYY.MM.DD" ํํ๋ก ์ค๋ ๋ ์ง๋ฅผ ๋ํ๋
๋๋ค.terms์ ๊ธธ์ด โค 20terms์ ์์๋ "์ฝ๊ด ์ข
๋ฅ ์ ํจ๊ธฐ๊ฐ" ํํ์ ์ฝ๊ด ์ข
๋ฅ์ ์ ํจ๊ธฐ๊ฐ์ ๊ณต๋ฐฑ ํ๋๋ก ๊ตฌ๋ถํ ๋ฌธ์์ด์
๋๋ค.์ฝ๊ด ์ข
๋ฅ๋ A~Z์ค ์ํ๋ฒณ ๋๋ฌธ์ ํ๋์ด๋ฉฐ, terms ๋ฐฐ์ด์์ ์ฝ๊ด ์ข
๋ฅ๋ ์ค๋ณต๋์ง ์์ต๋๋ค.์ ํจ๊ธฐ๊ฐ์ ๊ฐ์ธ์ ๋ณด๋ฅผ ๋ณด๊ดํ  ์ ์๋ ๋ฌ ์๋ฅผ ๋ํ๋ด๋ ์ ์์ด๋ฉฐ, 1 ์ด์ 100 ์ดํ์
๋๋ค.privacies์ ๊ธธ์ด โค 100privacies[i]๋ i+1๋ฒ ๊ฐ์ธ์ ๋ณด์ ์์ง ์ผ์์ ์ฝ๊ด ์ข
๋ฅ๋ฅผ ๋ํ๋
๋๋ค.privacies์ ์์๋ "๋ ์ง ์ฝ๊ด ์ข
๋ฅ" ํํ์ ๋ ์ง์ ์ฝ๊ด ์ข
๋ฅ๋ฅผ ๊ณต๋ฐฑ ํ๋๋ก ๊ตฌ๋ถํ ๋ฌธ์์ด์
๋๋ค.๋ ์ง๋ "YYYY.MM.DD" ํํ์ ๊ฐ์ธ์ ๋ณด๊ฐ ์์ง๋ ๋ ์ง๋ฅผ ๋ํ๋ด๋ฉฐ, today ์ด์ ์ ๋ ์ง๋ง ์ฃผ์ด์ง๋๋ค.privacies์ ์ฝ๊ด ์ข
๋ฅ๋ ํญ์ terms์ ๋ํ๋ ์ฝ๊ด ์ข
๋ฅ๋ง ์ฃผ์ด์ง๋๋ค.today์ privacies์ ๋ฑ์ฅํ๋ ๋ ์ง์ YYYY๋ ์ฐ๋, MM์ ์, DD๋ ์ผ์ ๋ํ๋ด๋ฉฐ ์ (.) ํ๋๋ก ๊ตฌ๋ถ๋์ด ์์ต๋๋ค.YYYY โค 2022MM โค 12MM์ด ํ ์๋ฆฟ์์ธ ๊ฒฝ์ฐ ์์ 0์ด ๋ถ์ต๋๋ค.DD โค 28DD๊ฐ ํ ์๋ฆฟ์์ธ ๊ฒฝ์ฐ ์์ 0์ด ๋ถ์ต๋๋ค.๐์ ์ถ๋ ฅ ์
| today | terms | privacies | result | 
|---|---|---|---|
| "2022.05.19" | ["A 6", "B 12", "C 3"] | ["2021.05.02 A", "2021.07.01 B", "2022.02.19 C", "2022.02.20 C"] | [1, 3] | 
| "2020.01.01" | ["Z 3", "D 5"] | ["2019.01.01 D", "2019.11.15 Z", "2019.08.02 D", "2019.07.01 D", "2018.12.28 Z"] | [1, 4, 5] | 
๐์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
์ ์ถ๋ ฅ ์ #2
| ์ฝ๊ด ์ข ๋ฅ | ์ ํจ๊ธฐ๊ฐ | 
|---|---|
| Z | 3 ๋ฌ | 
| D | 5 ๋ฌ | 
| ๋ฒํธ | ๊ฐ์ธ์ ๋ณด ์์ง ์ผ์ | ์ฝ๊ด ์ข ๋ฅ | 
|---|---|---|
| 1 | 2019.01.01 | D | 
| 2 | 2019.11.15 | Z | 
| 3 | 2019.08.02 | D | 
| 4 | 2019.07.01 | D | 
| 5 | 2018.12.28 | Z | 
์ค๋ ๋ ์ง๋ 2020๋  1์ 1์ผ์ ๋๋ค.
๐๋์ ํ์ด
function solution(today, terms, privacies) {
    // ์ ๋ต ๋ฐฐ์ด
    const result = []
    // ๋ ์ง๋ฅผ ์ผ์๋ก ๊ณ์ฐ
    function calDate(date) {
        return date.split(".").map((a, i) => {
            if(i === 0) {
                return Number(a) * 28 * 12
            } else if(i === 1) {
                return Number(a) * 28
            } else {
                return Number(a)
            }
        })
        .reduce((acc, cur) => acc+cur, 0)
    }
    // ์ค๋ ์ผ์
    const curDay = calDate(today)
    // ๊ฐ์ธ์ ๋ณด ํ์
 ๋ณ ์์ง ์ ํจ๊ธฐ๊ฐ ์ ์ฅ
    const termDict = {}
    // ํ์
 ๋ณ ์์ง ์ ํจ๊ธฐ๊ฐ ์
๋ ฅ
    terms.forEach(a => {
        const [alpha, month] = a.split(" ")
        termDict[alpha] = Number(month) * 28
    })
    // ๊ฐ์
 ๋ด์ญ๋ณ ์ ๊ฒ
    privacies.forEach((a, i) => {
        // [๋์์ผ, ํ์
]
        let [registDay, alpha] = a.split(" ")
        registDay = calDate(registDay)
        // ๊ธฐ๊ฐ์ด ์ง๋ฌ๋ค๋ฉด
        if((curDay - registDay) >= termDict[alpha]) result.push(i+1)
    })
    return result
}