-
[코딩테스트] 프로그래머스 2016년 자바스크립트프론트엔드 개발자가 될거야./코딩테스트 2022. 10. 13. 20:21
이 문제를 풀기 전에 알면 좋은 개념이 있다.
바로 "Date객체" !
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Date
나는 "Date 객체를 만드는 여러가지 방법"을 통해 해결할 수 있었다.
let today = new Date() let birthday = new Date('December 17, 1995 03:24:00') let birthday = new Date('1995-12-17T03:24:00') let birthday = new Date(1995, 11, 17) // 월은 0부터 시작 let birthday = new Date(1995, 11, 17, 3, 24, 0)
문제 설명
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) { const date = new Date(2016, a-1, b); //2016-05-23T15:00:00.000Z const weekDay = date.getDay(); //2 const weekObj = { 1 : "MON", 2 : "TUE", 3 : "WED", 4 : "THU", 5 : "FRI", 6 : "SAT", 0 : "SUN", } return weekObj[weekDay] }
다른 풀이 방법
function solution(a,b){ let date = new Date(2016, (a - 1), b); return date.toString().slice(0, 3).toUpperCase(); }
우와 신기하다......
console.log(date) = 2016-05-23T15:00:00.000Z
console.log(date.toString()) = "Tue May 24 2016 00:00:00 GMT+0900 (Korean Standard Time)"
콘솔을 찍어보면 이렇게 나온다.
date객체를 string으로 바꿔주면 요일과 월을 찍어준다..!!! <- 이 점이 포인트다.
그렇게 slice메서드로 Tue를 잘라주고
toUpperCase()로 대문자 변형시키면 바로 정답을 도출해 낼 수 있다 : )
코딩테스트를 하면 할수록 새롭게 배워가는 것이 많다.
재밌다. 더 알고싶고 더 배우고싶다.
'프론트엔드 개발자가 될거야. > 코딩테스트' 카테고리의 다른 글
[코딩테스트] 프로그래머스 삼총사 자바스크립트 (0) 2022.10.21 [코딩테스트] 프로그래머스 음양더하기 자바스크립트 (0) 2022.10.14 [코딩테스트] 프로그래머스 약수의 개수와 덧셈 자바스크립트 (0) 2022.10.11 [코딩테스트] 배열, 문자, 숫자 메서드 총정리 (0) 2022.10.11 [TIL] Today I Learned : 코드카타 Day1 & 프로그래머스 직사각형 별찍기 (0) 2022.07.04