지영이의 개발 블로그
[프로그래머스]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일같은 날짜는 주어지지 않습니다)
입출력 예
abresult5 | 24 | "TUE" |
<My Solution>
💛해석
문제를 풀기 위해 찾아보니 javascript 에 Date 를 이용하면 손쉽게 객체를 만들 수 있었다
- 먼저 day 라는 변수 안에 'SUN' ~ 'SAT' 을 배열로 넣어준다
- Date 를 이용하고 백틱을 이용해 변수를 삽입해준다 (백틱을 이용했기 때문에 ${a} ${b} 로 a 안에는 월, b안에는 일 을 변수로 받을 수 있게 되었다)
- .getDay 를 이용해 요일을 return 해준다
- 주어진 날짜의 요일에 해당하는 0 이상 6 이하의 정수. (일요일은 0, 월요일은 1, 화요일은 2, ...) 이렇게 해당하기 때문에 day 안에 배열로 요일을 넣어주었다.
-사용한 메소드
Date
- 기본적으로 Date는 생성자 함수를 통해 사용하고, 활용하는 방법으로는 크게 4가지가 있다.
- 기본 생성자 함수로 날짜 만들기
- 인자로 날짜 만들기
- UTC를 사용한 날짜 만들기
- 문자 값으로 날짜 만들기
.getDay()
- 주어진 날짜의 현지 시간 기준 요일을 반환한다.
- 주어진 날짜의 요일에 해당하는 0 이상 6 이하의 정수를 반환한다. (0 은 일요일, 1은 월요일 ... ~)
<other solution>
다른 사람의 풀이
function getDayName(a,b){
var date = new Date(2016, (a - 1), b);
return date.toString().slice(0, 3).toUpperCase();
}
똑같이 Date 를 사용하였는데 0이 1월부터 시작하기 때문에 월에 해당하는 a 에 -1을 해준 것으로 보인다.
그리고 return 값에서 .toString()을 이용해 문자열로 변환한 뒤, 3번째 까지 배열을 자르고 대문자로 변환해주는 방법을 사용한 것 같다.
'코딩 > 코딩테스트' 카테고리의 다른 글
[프로그래머스]같은 숫자는 싫어 (0) | 2022.07.07 |
---|---|
✔[프로그래머스]로또의 최고 순위와 최저 순위 (0) | 2022.07.06 |
✔[프로그래머스]모의고사 (0) | 2022.07.05 |
[프로그래머스]평균구하기 (0) | 2022.07.05 |
[프로그래머스]완주하지 못한 선수 (0) | 2022.07.05 |
Comments