[JavaScript] 프로그래머스 2016년 / 요일 구하기 getDay()

Gaeun·2022년 11월 23일

프로그래머스 Lv.1

목록 보기
9/11

2016년

나의 풀이

function solution(a, b) {
  const week = new Array("SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT");

  const day = new Date(`2016-${a}-${b}`).getDay();

  return week[day];
}

getDay() 메서드를 활용하여 구했다. 하지만 다른 사람들의 풀이를 보니, 나와 비슷하게 코드를 작성한 사람에게 이럴 거면 알고리즘 왜 푸냐 ㅋㅋ 라는 식의 댓글을 보고 머리가 띵했다. 내가 지금 알고리즘 실력을 늘리기 위해 프로그래머스 문제를 푸는 거지, 메서드 활용법을 자랑하는 게 아니기 때문에 다음 문제를 풀 때에는 알고리즘으로 풀 수 있도록 코드 작성 시 유의해야겠다.

다른 사람의 풀이

function getDayName(a,b){
    var dayList = ['FRI','SAT','SUN','MON','TUE','WED','THU'];
  var monthArr = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
  var daySum;
  if(a < 2) {
    daySum = b - 1;
  } else {
    daySum = monthArr.slice(0, a - 1).reduce((a, b) => a + b) + b - 1;
  }
    return dayList[daySum % 7];
}

위 코드를 보면 2016년 1월 1일이 금요일임을 이용하여 dayList 배열을 금요일부터 담았다. 그리고 마지막에 % 7을 하여 인덱스를 구함으로써 특정 날짜에 해당하는 요일의 인덱스를 구하고 있다.

다음번엔.. 나도 이렇게 알고리즘을 이용하여 풀 수 있도록...🥹

특정 날짜 요일 구하기

getDay() 메서드를 활용하여 요일을 구할 수 있다. 주어진 날짜의 현지 시간 기준 요일을 반환하며, 1은 일요일, 2는 월요일, ... , 7은 토요일을 나타낸다.

// syntax
dateObj.getDay()

// example
const birthday = new Date('August 19, 1975 23:15:30');
const day1 = birthday.getDay();	// Sunday - Saturday : 0 - 6

console.log(day1);	// expected output: 2

숫자가 아닌 'O요일'로 반환하기

배열을 이용하여 구할 수 있다. 0은 일요일, 1은 월요일, ... 7은 토요일인 것을 이용하여 getDate()의 반환 값에 맞는 인덱스의 값을 출력하도록 하면 된다.

// example
const birthday = new Date('August 19, 1975 23:15:30');
const week = ['일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일']
const day = birthday.getDay();	// Sunday - Saturday : 0 - 6

console.log(week[day]);	// expected output: "화요일"
profile
🌱 새싹 개발자의 고군분투 코딩 일기

0개의 댓글