✊ 필오의 개발일지
Back to Posts
2017년 11월 16일

2016년 A월 B일

2016년 A월 B일

2016년 A월 B일

2016년 1월 1일은 금요일입니다. 2016년 A월 B일은 무슨 요일일까요? 두 수 A,B를 입력받아 A월 B일이 무슨 요일인지 출력하는 getDayName 함수를 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT 를 출력해주면 됩니다. 예를 들어 A=5, B=24가 입력된다면 5월 24일은 화요일이므로 TUE를 반환하면 됩니다.


1. 처음 생각한 로직

function getDayName(a, b) { let answer = ''; let month = a; let date = 0; let inputDate = b; let week = 0; const day = ['FRI', 'SAT', 'SUN', 'MON', 'TUE', 'WED', 'THU']; switch (month) { case 1: date = 0; break; case 2: date = 31; break; case 3: date = 31 + 28; break; case 4: date = 31 * 2 + 29; break; case 5: date = 31 * 2 + 30 * 2 - 1; break; case 6: date = 31 * 3 + 30 * 2 - 1; break; case 7: date = 31 * 3 + 30 * 3 - 1; break; case 8: date = 31 * 4 + 30 * 3 - 1; break; case 9: date = 31 * 5 + 30 * 3 - 1; break; case 10: date = 31 * 5 + 30 * 4 - 1; break; case 11: date = 31 * 6 + 30 * 4 - 1; break; case 12: date = 31 * 6 + 30 * 5 - 1; break; } date = date + inputDate; return day[date % 7]; } //아래 코드는 테스트를 위한 코드입니다. console.log(getDayName(5, 24));

2. case 문이 너무 비효율적이다. > 반복문으로 바꾸자

function getDayName(a, b) { let answer = ['THU', 'FRI', 'SAT', 'SUN', 'MON', 'TUE', 'WED']; let month = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; let sum = 0; for (let i = 0; i < a - 1; i++) { sum += month[i]; } sum += b; return answer[sum % 7]; }

3. Date 메소드를 사용해보자.

메소드 사용

function getDayName(a, b) { let arr = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT']; let date = new Date(`2016,${a},${b}`); let day = date.getDay(); return arr[day]; }

템플릿 리터럴을 사용하지 않으면 값이 이상하게 나온다.


참고링크

  1. https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Date 
Previous3/ Typescript_기본 데이터 타입
Next2/ Typescript_tsconfig.json 프로퍼티의 종류

Related

© 2025 Felix