[Level 1] 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일같은 날짜는 주어지지 않습니다)
입출력 예
a | b | result |
---|---|---|
5 | 24 | "TUE" |
내 방식
function solution(a, b) {
let answer = Number();
let dates = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; // 월별일수
let days = ["FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"]; // 요일
for(let i = 0; i < (a-1); i++) { // 월 - 1월 일수 계산하기 마지막 월은 b일이어서 따
answer += dates[i]
}
answer += b - 1; // array는 0부터 시작하므로
answer = days[(answer % 7)]
return answer;
}
날짜 수를 더해서 계산해야 하기 때문에 answer를 숫자로 만들어 두고, array에 2016년 일수를 넣었다. 2016년은 금요일이 시작이어서 요일 array의 시작을 금요일부터 설정했다. for문을 사용하여 a - 1 (마지막 달은 일 수를 따로 계산해야 하기 때문) 전 달까지 일 수를 더하고, 일 수를 사용하여 answer에 마지막 달의 일 수를 더했다. array는 0부터 시작하기에 1을 따로 빼주었다. 그렇게 해서 나온 일 수를 7로 나누어 값을 구했다.
- 2021-06-23
function solution(a, b) {
var answer = b;
let dates = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
let days = ["FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"];
for(let i = 0; i < a - 1; i++) {
answer += dates[i];
}
return days[answer % 7 - 1];
}
// 일수를 더하기 위하여 answer의 기본값을 b로 정해 a월의 요일 수를 더한다.
// 금요일부터 시작하는 요일 배열과 12달의 일수를 담은 배열을 만든다.
// a월보다 한 달 적게 요일수를 더한다.
// 7로 나눈 후 dates의 인덱스를 return한다.
// 이 때 인덱스는 0부터 시작하므로 1을 빼준다.
다른 사람의 방식
function getDayName(a,b){
var arr = ['SUN','MON','TUE','WED','THU','FRI','SAT'];
var date = new Date(`2016-${a}-${b}`);
var day = date.getDay()
return arr[day];
}
Date 객체를 사용하여 문제를 풀었다. 훨씬 간단하고 쉬운 방법인 것 같다.
정리
Author And Source
이 문제에 관하여([Level 1] 2016년), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@songjihyun/Level-1-2016년저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)