[Algorithm Problem] 2016년
문제
2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT
입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 "TUE"를 반환하세요.
제한 조건
2016년은 윤년입니다.
2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다)
코드
- 반복문
function solution(a, b) {
let weekDay = ["SUN","MON","TUE","WED","THU","FRI","SAT"];
let day = b;
let index = 4;
for (let i = 1; i < a; i++) {
if (i === 2)
day += 29;
else if (i === 4 || i === 6 || i === 9 || i === 11)
day += 30;
else
day += 31;
}
index = (index + day % 7) % 7;
return weekDay[index];
}
테스트 1 〉 통과 (0.07ms, 30.2MB)
테스트 2 〉 통과 (0.05ms, 30.2MB)
테스트 3 〉 통과 (0.06ms, 30.2MB)
테스트 4 〉 통과 (0.07ms, 29.9MB)
테스트 5 〉 통과 (0.05ms, 29.9MB)
테스트 6 〉 통과 (0.05ms, 30.1MB)
테스트 7 〉 통과 (0.07ms, 29.9MB)
테스트 8 〉 통과 (0.07ms, 30.2MB)
테스트 9 〉 통과 (0.06ms, 30.1MB)
테스트 10 〉 통과 (0.06ms, 30MB)
테스트 11 〉 통과 (0.05ms, 30.1MB)
테스트 12 〉 통과 (0.07ms, 30.2MB)
테스트 13 〉 통과 (0.05ms, 30MB)
테스트 14 〉 통과 (0.06ms, 30.2MB)
- 메소드 호출
function solution(a, b) {
let weekDay = ["SUN","MON","TUE","WED","THU","FRI","SAT"];
let date = new Date(`2016-${a}-${b}`);
return weekDay[date.getDay()];
}
테스트 1 〉 통과 (0.14ms, 30.6MB)
테스트 2 〉 통과 (0.13ms, 30.4MB)
테스트 3 〉 통과 (0.13ms, 30.4MB)
테스트 4 〉 통과 (0.14ms, 30.1MB)
테스트 5 〉 통과 (0.15ms, 30.7MB)
테스트 6 〉 통과 (0.15ms, 30.3MB)
테스트 7 〉 통과 (0.13ms, 30.6MB)
테스트 8 〉 통과 (0.15ms, 30.4MB)
테스트 9 〉 통과 (0.16ms, 30.6MB)
테스트 10 〉 통과 (0.13ms, 30.6MB)
테스트 11 〉 통과 (0.13ms, 30.5MB)
테스트 12 〉 통과 (0.16ms, 30.5MB)
테스트 13 〉 통과 (0.17ms, 30.6MB)
테스트 14 〉 통과 (4.58ms, 30.3MB)
풀이
초기 요일을 12월 31일로 설정하여 받아 온 날짜와 차이를 구한 뒤 % 7 연산자를 통해 요일 인덱스 삽입
혹은
Date 메소드를 사용해 간략화
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
Author And Source
이 문제에 관하여([Algorithm Problem] 2016년), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@idhyo0o/Algorithm-Problem-2016년저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)