Programmers - 2016년

So'sCode·2024년 1월 23일
0

프로그래머스 - Lv1.

목록 보기
20/20

문제 설명📖

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

코드🔑

function solution(a, b) {
    let Week = ["THU","FRI","SAT",'SUN',"MON","TUE","WED"];
    let Month = [31,29,31,30,31,30,31,31,30,31,30,31];
    let day = 0;
    for(let i = 0 ; i < a-1 ; i++){
        day += Month[i];
    }
    day += b;
    return Week[day%7];
}

정리📚

처음에 어렵게 생각했던것같다. 아니 31일인 달을 어떻게 코드로 짜지~ 부터 생각했는데 사실 이렇게 달같이 정해진 배열은 냅다 써줘도 된다는걸 기억하면 좋겠다.
그리고 Week를 목요일부터 준 이유는 우선 1/1일이 금요일이라고 했다.
.
.
.
우선 예를들어 3/1일의 날짜를 구한다고 친다면
1월의 모든달과 2월의 모든달읠 합친 후 1을 합치고, 7(일주일)로 나누어준 후 나머지를 가지고오면 된다.

실수1.
그러나 처음에 1/1일이 금요일이라고 생각해서 음 그럼 나머지 -1하면되겠네 -1은 어차피 맨뒤를 가르키겠지 라는 바보같은 생각을 해서 처음에는 week를 FRI로 두고 시작했다.
그러나,,,,,자스에는 -1이자동적으로 뒷배열을 가르키는 기능은 없어 목요일을 배열의 맨 앞으로 빼둔것이다.

즉 사실 이런 비슷한 유형은 안나올듯 하지만 만약 이처럼 특정 날짜의 요일을 구해야한다 ~ 고하면
1월부터 해당 날짜의 값을 더한 후 7로 나눈 나머지를 챙기면 되는 문제이다. 기억하자!

profile
이왕하는거미루지말고하자.

0개의 댓글