๐งก๋ฌธ์ ์ค๋ช
๊ณ ๊ฐ์ ์ฝ๊ด ๋์๋ฅผ ์ป์ด์ ์์ง๋ 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
}