어제보다 뭐라도 더 알자

공부를 정리하고, 재사용하기 위한 블로그입니다. 잘못된 부분이있다면 댓글로 알려주세요~~

자바 스크립트 공부/프로그래머스 코딩테스트

자바스크립트 현재 시간을 알고 싶을때 Date, 문자열을 대문자로 변환할때 String.prototype.toUpperCase()

chord 2022. 9. 5. 14:14
320x100

https://school.programmers.co.kr/learn/courses/30/lessons/12901

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요

저의 풀이

function solution(a, b) {  
let date = new Date(2016, a - 1, b);
return date.toString().split(" ")[0].toUpperCase();
}
console.log(Date());
// Mon Sep 05 2022 13:41:41 GMT+0900 (한국 표준시)

 

Date()가 위처럼 나온다는걸 알고있었기에 저 a b에 맞는 날짜의 요일을 가져오면 되겠다라고 생각했습니다.


let date = new Date(2016, a - 1, b);

2016년 a월 b일을 가져옵니다.


return date.toString().split(" ")[0].toUpperCase();
.toString()을 사용해서 date(오브젝트)를 문자열로 바꾸고

.split(" ") 문자열을 공백으로 자른 배열을 만들고  [0]배열의 0번 인덱스(요일입니다.)를

.toUpperCase(); 대문자로 변환했습니다.

 

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Date

 

Date - JavaScript | MDN

JavaScript Date 객체는 시간의 한 점을 플랫폼에 종속되지 않는 형태로 나타냅니다. Date 객체는 1970년 1월 1일 UTC(협정 세계시) 자정과의 시간 차이를 밀리초로 나타내는 정수 값을 담습니다.

developer.mozilla.org

자바스크립트 문자를 하나하나 잘라서 배열에 담을때 String.split("")

 

자바스크립트 문자를 하나하나 잘라서 배열에 담을때 String.split(""), 문자로 이루어진 배열을 숫

https://school.programmers.co.kr/learn/courses/30/lessons/12947 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞..

chord.tistory.com

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase

 

String.prototype.toUpperCase() - JavaScript | MDN

toUpperCase() 메서드는 문자열을 대문자로 변환해 반환합니다.

developer.mozilla.org

다른 분들의 풀이

function solution(a, b) {
    const monthDay = [31,29,31,30,31,30,31,31,30,31,30,31]
    const weekDay = ["THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED"]

    let days = b
    for(let i=0 ; i<a-1 ; i++)
        days += monthDay[i];

    return weekDay[days%7];
}


const monthDay = [31,29,31,30,31,30,31,31,30,31,30,31]

2016년의 매달의 날짜 수를 배열로 만들고

 

const weekDay = ["THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED"]

2016년 1월 1일이 금요일이라 주의 배열을 이렇게 만들고.

 

let days = b 

for(let i=0 ; i<a-1 ; i++)
        days += monthDay[i];

주어진 a 월 -1 만큼(배열은 0부터 시작) 날짜를  days 즉 b에 더하고

return weekDay[days%7];
days%7나머지 값이 weekDay인덱스인 값을 리턴

 

음.. 프로그래머스 댓글에 보면 제가 푼것처럼 Date객체를 이용해서 풀면 알고리즘 공부가 아니다라는 말이 있는데..

쉽게 풀수있는걸 어렵게 풀이유가 있을까 싶습니다...(그래서 다른것도 공부했습니다 ㅎㅎ;;) 사실 위의 제가 푸는 방법이 생각났을때 아래 방법으로 풀어도 될거란 생각을 하긴했는데 굳이..? 라고 생각해서 저의 풀이 처럼 풀었습니다.

 

320x100