๊ฐ๋ฐ์ผ์ง
[ํ๋ก๊ทธ๋๋จธ์ค] level1. ๊ฐ์ธ์ ๋ณด ์์ง ์ ํจ๊ธฐ๊ฐ ๋ณธ๋ฌธ
[ํ๋ก๊ทธ๋๋จธ์ค] level1. ๊ฐ์ธ์ ๋ณด ์์ง ์ ํจ๊ธฐ๊ฐ
doublejune 2024. 9. 23. 21:11A. ๋ฌธ์ ์ค๋ช
๋ฌธ์ ์ค๋ช
๊ณ ๊ฐ์ ์ฝ๊ด ๋์๋ฅผ ์ป์ด์ ์์ง๋ 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
์ฒซ ๋ฒ์งธ ๊ฐ์ธ์ ๋ณด๋ A์ฝ๊ด์ ์ํด 2021๋
11์ 1์ผ๊น์ง ๋ณด๊ด ๊ฐ๋ฅํ๋ฉฐ, ์ ํจ๊ธฐ๊ฐ์ด ์ง๋ฌ์ผ๋ฏ๋ก ํ๊ธฐํด์ผ ํ ๊ฐ์ธ์ ๋ณด์
๋๋ค.
๋ ๋ฒ์งธ ๊ฐ์ธ์ ๋ณด๋ B์ฝ๊ด์ ์ํด 2022๋
6์ 28์ผ๊น์ง ๋ณด๊ด ๊ฐ๋ฅํ๋ฉฐ, ์ ํจ๊ธฐ๊ฐ์ด ์ง๋์ง ์์์ผ๋ฏ๋ก ์์ง ๋ณด๊ด ๊ฐ๋ฅํฉ๋๋ค.
์ธ ๋ฒ์งธ ๊ฐ์ธ์ ๋ณด๋ C์ฝ๊ด์ ์ํด 2022๋
5์ 18์ผ๊น์ง ๋ณด๊ด ๊ฐ๋ฅํ๋ฉฐ, ์ ํจ๊ธฐ๊ฐ์ด ์ง๋ฌ์ผ๋ฏ๋ก ํ๊ธฐํด์ผ ํ ๊ฐ์ธ์ ๋ณด์
๋๋ค.
๋ค ๋ฒ์งธ ๊ฐ์ธ์ ๋ณด๋ C์ฝ๊ด์ ์ํด 2022๋
5์ 19์ผ๊น์ง ๋ณด๊ด ๊ฐ๋ฅํ๋ฉฐ, ์ ํจ๊ธฐ๊ฐ์ด ์ง๋์ง ์์์ผ๋ฏ๋ก ์์ง ๋ณด๊ด ๊ฐ๋ฅํฉ๋๋ค.
๋ฐ๋ผ์ ํ๊ธฐํด์ผ ํ ๊ฐ์ธ์ ๋ณด ๋ฒํธ๋ [1, 3]์
๋๋ค.
์ค๋ ๋ ์ง๋ฅผ ์๋ฏธํ๋ ๋ฌธ์์ด today, ์ฝ๊ด์ ์ ํจ๊ธฐ๊ฐ์ ๋ด์ 1์ฐจ์ ๋ฌธ์์ด ๋ฐฐ์ด terms์ ์์ง๋ ๊ฐ์ธ์ ๋ณด์ ์ ๋ณด๋ฅผ ๋ด์ 1์ฐจ์ ๋ฌธ์์ด ๋ฐฐ์ด privacies๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ์ด๋ ํ๊ธฐํด์ผ ํ ๊ฐ์ธ์ ๋ณด์ ๋ฒํธ๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก 1์ฐจ์ ์ ์ ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
์ ํ์ฌํญ
today๋ "YYYY.MM.DD" ํํ๋ก ์ค๋ ๋ ์ง๋ฅผ ๋ํ๋
๋๋ค.
1 ≤ terms์ ๊ธธ์ด ≤ 20
terms์ ์์๋ "์ฝ๊ด ์ข
๋ฅ ์ ํจ๊ธฐ๊ฐ" ํํ์ ์ฝ๊ด ์ข
๋ฅ์ ์ ํจ๊ธฐ๊ฐ์ ๊ณต๋ฐฑ ํ๋๋ก ๊ตฌ๋ถํ ๋ฌธ์์ด์
๋๋ค.
์ฝ๊ด ์ข
๋ฅ๋ A~Z์ค ์ํ๋ฒณ ๋๋ฌธ์ ํ๋์ด๋ฉฐ, terms ๋ฐฐ์ด์์ ์ฝ๊ด ์ข
๋ฅ๋ ์ค๋ณต๋์ง ์์ต๋๋ค.
์ ํจ๊ธฐ๊ฐ์ ๊ฐ์ธ์ ๋ณด๋ฅผ ๋ณด๊ดํ ์ ์๋ ๋ฌ ์๋ฅผ ๋ํ๋ด๋ ์ ์์ด๋ฉฐ, 1 ์ด์ 100 ์ดํ์
๋๋ค.
1 ≤ privacies์ ๊ธธ์ด ≤ 100
privacies[i]๋ i+1๋ฒ ๊ฐ์ธ์ ๋ณด์ ์์ง ์ผ์์ ์ฝ๊ด ์ข
๋ฅ๋ฅผ ๋ํ๋
๋๋ค.
privacies์ ์์๋ "๋ ์ง ์ฝ๊ด ์ข
๋ฅ" ํํ์ ๋ ์ง์ ์ฝ๊ด ์ข
๋ฅ๋ฅผ ๊ณต๋ฐฑ ํ๋๋ก ๊ตฌ๋ถํ ๋ฌธ์์ด์
๋๋ค.
๋ ์ง๋ "YYYY.MM.DD" ํํ์ ๊ฐ์ธ์ ๋ณด๊ฐ ์์ง๋ ๋ ์ง๋ฅผ ๋ํ๋ด๋ฉฐ, today ์ด์ ์ ๋ ์ง๋ง ์ฃผ์ด์ง๋๋ค.
privacies์ ์ฝ๊ด ์ข
๋ฅ๋ ํญ์ terms์ ๋ํ๋ ์ฝ๊ด ์ข
๋ฅ๋ง ์ฃผ์ด์ง๋๋ค.
today์ privacies์ ๋ฑ์ฅํ๋ ๋ ์ง์ YYYY๋ ์ฐ๋, MM์ ์, DD๋ ์ผ์ ๋ํ๋ด๋ฉฐ ์ (.) ํ๋๋ก ๊ตฌ๋ถ๋์ด ์์ต๋๋ค.
2000 ≤ YYYY ≤ 2022
1 ≤ MM ≤ 12
MM์ด ํ ์๋ฆฟ์์ธ ๊ฒฝ์ฐ ์์ 0์ด ๋ถ์ต๋๋ค.
1 ≤ DD ≤ 28
DD๊ฐ ํ ์๋ฆฟ์์ธ ๊ฒฝ์ฐ ์์ 0์ด ๋ถ์ต๋๋ค.
ํ๊ธฐํด์ผ ํ ๊ฐ์ธ์ ๋ณด๊ฐ ํ๋ ์ด์ ์กด์ฌํ๋ ์
๋ ฅ๋ง ์ฃผ์ด์ง๋๋ค.
B. ๋ต์
def solution(today, terms, privacies): answer = [] dict_terms = {} for term in terms: term_arr = term.split(" ") dict_terms[term_arr[0]] = int(term_arr[1]) for i, privacy in enumerate(privacies): privacy_arr = privacy.split(" ") if dispose_privacy_or_not(today, privacy_arr[0], dict_terms[privacy_arr[1]]): answer.append(i+1); return answer def dispose_privacy_or_not(today, privacy , validation_months): today_arr = today.split(".") privacy_arr = privacy.split(".") passed_months= (int(today_arr[0])-int(privacy_arr[0]))*12 + int(int(today_arr[1])-int(privacy_arr[1])) if int(today_arr[2]) >= int(privacy_arr[2]): passed_months+=1 return passed_months > validation_months
C. ๊ฐ์
1. ๋น๊ต๊ธฐ์ค์ Months๊ฐ ์๋ days๋ก.
: ์ ํจ๊ธฐ๊ฐ์ด ์ง๋ฌ๋์ง ๊ฒ์ฆ์ ํ ๋, ๋๋ Months๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋ค. ์ฝ๊ด์ ๋ฐ๋ผ ์ฃผ์ด์ง ์ ํจ๊ธฐ๊ฐ์ ๊ธฐ์ค์ด "Months"๊ธฐ์ค์ด์ด์ ํฐ ์๊ฐ ์์ด ๊ทธ๋ ๊ฒ ํ๋ค. ํ์ง๋ง months ๊ธฐ์ค์ผ๋ก ํ ์ days๋ฅผ ๋น๊ตํด month๋ฅผ +1ํ ์ง ๋ง์ง ๊ฒฐ์ ํ๋ ๋ก์ง์ด ๋ค์ด๊ฐ์ผํ๋ค. but, days๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ณ์ฐํ๋ฉด ๋์๋น๊ต๋ฅผ ํ๋ฒ์ ํ ์ ์๋ค.
'Algorithm๐จ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ํด์ : level2. ์ ํ๋ฒํธ ๋ชฉ๋ก (1) | 2024.10.17 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ํด์ : level1. ํฐ์ผ๋ชฌ (2) | 2024.09.27 |
[ํ๋ก๊ทธ๋๋จธ์ค] level1. ํ๋ฒ๊ฑฐ ๋ง๋ค๊ธฐ (0) | 2024.09.25 |
[ํ๋ก๊ทธ๋๋จธ์ค] level1. ํคํจ๋ ๋๋ฅด๊ธฐ (0) | 2024.09.24 |
[ํ๋ก๊ทธ๋๋จธ์ค] level1. ๋๋ง์ ์ํธ (0) | 2024.09.12 |