알고리즘

알고리즘(Javascript) 프로그래머스 "2016"

changy0ng 2022. 7. 17. 13:12

문제 설명

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일같은 날짜는 주어지지 않습니다)

입출력 예

abresult
5 24 "TUE"

 

[접근법]

우선 solution function함수로 a,b를 받은 후 바로 return 값으로 설정해줬습니다.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

 

Date - JavaScript | MDN

JavaScript Date objects represent a single moment in time in a platform-independent format. Date objects contain a Number that represents milliseconds since 1 January 1970 UTC.

developer.mozilla.org

Date()만 쓰게 될 경우 string 값으로 현재 날짜와 시간 값을 반환합니다. 코드는 new Date().toString() 와 동일하게 적용됩니다. 그냥 new Date()로 쓸경우 생성자(Constructor)로 부를 경우 새로운 Date 오브젝트를 리턴합니다.

 

문제에서 물어보는 것은 2016년만 물어보는 문제이기에 2016년을 넣고 a값은 console로 찍어본 결과 인덱스형태로 되어있기에 0,1,2 형태로 1월,2월,3월 이렇게 들어가기 때문에 a-1로 1월, 2월, 3월을 값을 인덱스에 맞춰 주었습니다. b는 숫자값 그대로 반환하기에 그대로 두었습니다.

 

console로 결괏값이 "Tue May 24 2016 00:00:00 GMT+0900 (Korean Standard Time_"인데 거기서 필요한 정보는 앞에 "Tue"만 가져오면 되기에 slice()를 써서 (0,3)까지 가져옵니다. 그리고 그부분을 대문자로 가져와야하기에 .toUpperCase를 씁니다.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice

 

String.prototype.slice() - JavaScript | MDN

The slice() method extracts a section of a string and returns it as a new string, without modifying the original string.

developer.mozilla.org

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase

 

String.prototype.toUpperCase() - JavaScript | MDN

The toUpperCase() method returns the calling string value converted to uppercase (the value will be converted to a string if it isn't one).

developer.mozilla.org

결과값은 잘 나왔고 테스트 모두 통과하였습니다