[ํ๋ก๊ทธ๋๋จธ์ค | Lv1] ๊ฐ์ธ์ ๋ณด ์์ง ์ ํจ๊ธฐ๊ฐ (Python) - 2023 KAKAO BLIND RECRUITMENT
https://school.programmers.co.kr/learn/courses/30/lessons/150370
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๋์จ์ง ์ผ๋ง ์ ๋ ๋ฌธ์ !
๋ฌธ์ ๋ ๊ฐ๋จํ๋ฐ ๋ฌธ์์ด๋ก ํธ๋๋ผ ๋จธ๋ฆฌ ๊นจ์ง๋ ์ค ์์๋คใ ์ซ์๋ก ํ๋ฉด ์ฝ๋ค,,!
(์ฒ์ ํผ ๋ฐฉ๋ฒ)- ๋ฌธ์์ด๋ก ์ ๊ทผ
1. terms -> ๋์ ๋๋ฆฌ๋ก ์ ์ฅ, today -> [y, m, d] ํํ๋ก ์ ์ฅ
2. privacies ๋ถ๋ฆฌํด์ date = [y, m, d] ํํ๋ก ์ ์ฅ
3. ๋์ ๋๋ฆฌ์์ ํด๋น ์ฝ๊ด ์ฐพ์์ ๋ ์ง์ ๊ฐ์ ์ ๋ํด์ค
ใด ํด๋น ๊ฐ์ ์ // 12 ๋ฅผ y์ ๋ํ๊ณ
ใด ํด๋น ๊ฐ์์ % 12 ๋ฅผ m์ ๋ํ๊ณ
ใด ์ด๋, ๋ง์ฝ m์ด 12๋ณด๋ค ํฌ๋ฉด y+1, m-12
4. ๋ ์ง์์ ํ๋ฃจ ๋นผ๊ธฐ
ใด d=1์ด๋ฉด d=28, m-1
ใด m=0์ด๋ฉด y-1, m-12
ใด d!=1์ด๋ฉด d-1
5. ๋ ์ง ๋น๊ตํด์ today๊ฐ ๋ ํฌ๋ฉด answer์ ์ถ๊ฐ
ใดyear -> month -> day ์์ผ๋ก ๋น๊ต
# ํ๋ก๊ทธ๋๋จธ์ค 150370: ๊ฐ์ธ์ ๋ณด ์์ง ์ ํจ๊ธฐ๊ฐ (2023 KAKAO BLIND RECRUITMENT)
def solution(today, terms, privacies):
answer = []
todayDate = list(map(int, today.split('.')))
terms_dic = {}
for i in terms:
terms_dic[i.split()[0]] = int(i.split()[1])
n = 1
for i in privacies:
date = list(map(int, i.split()[0].split('.')))
date[0] += terms_dic[i.split()[1]] // 12
date[1] += terms_dic[i.split()[1]] % 12
if date[1] > 12:
date[0] += 1
date[1] -= 12
if date[2] == 1:
date[2] = 28
date[1] -= 1
if date[1] == 0:
date[0] -= 1
date[1] = 12
else:
date[2] -= 1
if todayDate[0] > date[0]:
answer.append(n)
elif todayDate[0] == date[0]:
if todayDate[1] > date[1]:
answer.append(n)
elif todayDate[1] == date[1]:
if todayDate[2] > date[2]:
answer.append(n)
n += 1
return answer
(๋ค์ ํผ ๋ฐฉ๋ฒ) - ์ซ์๋ก ์ ๊ทผ
๋ฌธ์์ด๋ก ๋น๊ตํ๋๋ผ ์ฝ๋๊ฐ ๊ต์ฅํ ๋ณต์กํ๊ณ ์ง์ ๋ถํด์ ธ์ ๋ ์ง๋ฅผ ๋ชจ๋ ์ซ์๋ก ๋ฐ๊ฟ์ ๋น๊ตํ๋ค
1. ๋ง์ฐฌ๊ฐ์ง๋ก terms -> ๋์ ๋๋ฆฌ๋ก ์ ์ฅ, today -> [y, m, d]๋ก ์ ์ฅ
ใด terms์์ value๋ ๊ฐ์์*28 (๋ฌธ์ ์์ ํ ๋ฌ์ 28์ผ)
ใด today์์ (y*12*28 + m*28 + d)๋ฅผ ์ซ์๋ก ์ ์ฅ (12๋ฌ, 28์ผ)
2. ๋ง์ฐฌ๊ฐ์ง๋ก privacies ๋ถ๋ฆฌํด์ date = [y, m, d] ํํ๋ก ์ ์ฅ
ใด date์์ (y*12*28 + m*28 + d) + ๋์ ๋๋ฆฌ์์ ํด๋น ์ฝ๊ด ์ฐพ์์ ๋ ์ง ๋ํด์ค - 1(ํ๋ฃจ ๋นผ๊ธฐ)
3. today์ date ๋น๊ตํด์ today๊ฐ ๋ ํฌ๋ฉด answer์ ์ถ๊ฐ
# ํ๋ก๊ทธ๋๋จธ์ค 150370: ๊ฐ์ธ์ ๋ณด ์์ง ์ ํจ๊ธฐ๊ฐ (2023 KAKAO BLIND RECRUITMENT)
def solution(today, terms, privacies):
answer = []
terms_dic = {}
for i in terms:
terms_dic[i.split()[0]] = int(i.split()[1]) * 28
todayDate = list(map(int, today.split('.')))
td = todayDate[0] * 12 * 28 + todayDate[1] * 28 + todayDate[2]
n = 1
for i in privacies:
date = list(map(int, i.split()[0].split('.')))
d = date[0] * 12 * 28 + date[1] * 28 + date[2] + terms_dic[i.split()[1]] - 1
if td > d:
answer.append(n)
n += 1
return answer