-
[자바스크립트] 프로그래머스 Lv.1 2016년[TIL] 카테고리/알고리즘 문제풀기 2022. 5. 14. 09:38
코드 자체는 금방 짰는데 맘에 안들어서 한참을 갸우뚱 거렸던 코드.
다른 사람 답변을 보니 date함수로 해결해버리던데, 그게 맞는거 같으면서도
그럴거면 문제를 내는 의미가 있나 싶으면서도..
레벨 1 문제니까 맞을것도 같으면서도... 아무튼 그렇다
let firstDay = [1, 32, 61, 92, 122, 153, 183, 214, 245, 275, 306, 336] // 각 월의 시작날짜가 16'년의 몇번째 날인지 체크 let dayIs = ['THU', 'FRI', 'SAT', 'SUN', 'MON', 'TUE', 'WED'] // 요일 체크~ 순서는 1월 1일인 '금'이 인덱스 1번이게 했어요. answer = dayIs[(firstDay[a-1]+(b-1))%7] console.log(answer)
일단 논리는 입력된 날짜가 1월 1일로부터 몇번째 날짜인지 세서 7로 나누고 나머지로 요일을 뽑는거다.
각 월의 시작날짜가 며칠쨰인지를 배열로 넣어주었고....
...? 근데 이걸 내가 계산해서 넣어줄거면 프로그램 의미가 없지 않은가 싶은거다.
엑셀로 끍어다가 만든 배열이지만 암튼 맘에 안들어서
let monthDays = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30] let dayIs2 = ['THU', 'FRI', 'SAT', 'SUN', 'MON', 'TUE', 'WED'] let thisMonth = monthDays.slice(0,a).reduce(function(sum,days){return sum+days}) let answer2 = dayIs2[(thisMonth+b)%7]
날짜를 셀수 있게 다시 만들었다. 마음이 아주조금 편해졌지만 여즉 맘에 안든다...
불 - 편....
뭐 그래도 2월 값만 바꾸면 다른 년도에도 쓸 수 있는 코드가 되었으니까... 싶으면서도 여전히 맘에 안들어,,
function getDayName(a,b){ var date = new Date(2016, (a - 1), b); return date.toString().slice(0, 3).toUpperCase(); }
date를 사용한다면 저렇게 된단다. 추천을 가장 많이 받은 다른 분 코드이다.
'[TIL] 카테고리 > 알고리즘 문제풀기' 카테고리의 다른 글
[자바스크립트] 프로그래머스 Lv.1 내적 (0) 2022.05.14 [자바스크립트] 프로그래머스 Lv.1 나누어 떨어지는 숫자 배열 (0) 2022.05.14 [자바스크립트] 프로그래머스 Lv.1 부족한 금액 계산하기 (0) 2022.05.14 [자바스크립트] 프로그래머스 Lv.1 행렬의 덧셈 (0) 2022.05.14 [자바스크립트] 프로그래머스 Lv.1 x만큼 간격이 있는 n개의 숫자 (0) 2022.05.14