프로그래머스 lv1 문제 풀이: 2016년

전영호·2021년 7월 14일
0

알고리즘

목록 보기
8/40

7월 13일 알고리즘 문제풀이
프로그래머스 lv1 문제 풀이: 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일같은 날짜는 주어지지 않습니다)

입출력 예

abresult
524"TUE"

내 풀이

//문제풀이
function solution(a, b) {
  let week = ["THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED"];
  //1월1일이 금요일이기 때문에 1번 인덱스가 금요일이 되도록 작성
  let month = {
    1: 31,
    2: 29,
    3: 31,
    4: 30,
    5: 31,
    6: 30,
    7: 31,
    8: 31,
    9: 30,
    10: 31,
    11: 30,
    12: 31,
  };
  // 각 월별 날짜를 저장
  let day = 0;

  if (a === 1) {
    day = day + b; // 1월일 경우에는 일수만 더해준다.
  } else {
    for (let i = 1; i <= a - 1; i++) {
      day = day + month[i];
    }
    day = day + b;
    // 그외의 달에는 이전달까지를 모두 더하고 날짜까지 더해준다.
  }

  let result = day % 7;

  return week[result]; // 해당 인덱스에 맞는 요일 출력
}

// 윤년이라는 걸 가정한 상태
/* 
1: 31일
2: 29일
3: 31일
4: 30일
5: 31일
6: 30일
7: 31일
8: 31일
9: 30일
10: 31일
11: 30일
12: 31일
*/
profile
인생 1회차 주니어 개발자

0개의 댓글