[코딩테스트 연습] 2016년_Level.01
코딩테스트/JavaScript

[코딩테스트 연습] 2016년_Level.01

하루에 3문제씩은 풀어보자는 마음으로 풀고 있다.

역시 풀면서 느껴지는 실제 코딩의 벽이란 아픈 것...

 


[문제 설명]

 

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

 

[입출력 예]

a b result
5 24 "TUE"

 

 


이번에는 입출력 예에 대한 설명이 없다!

우선 문제를 읽고 나는 이렇게 생각했다.

 

˙ new Date( dateString ).getDay( )를 이용하여 요일을 구하자!

˙ 그런데 getDay( )는 숫자로 요일을 리턴하니까 getTodayLabel(today)라는 함수를 만들어서 요일을 받아내자

˙ dateString은 '일 월 년도'로 받자!(String으로!)

 

그리고 아래가 내가 작성한 코드이다.


[작성코드]

 

function getMonthLabel(a) {
    const MONTH = new Array('January', 'Feburary', 'March', 'April', 'May', 'June', 'July', 'August', 'Setpember', 'October', 'November', 'December');
    let monthLabel = MONTH[a-1];    //배열 MONTH의 index는 0부터 시작하기 때문!
    
    return monthLabel;
}

function getTodayLabel(today) {
    
    const week = new Array('SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT');
    let todayLabel = week[today];
    
    return todayLabel;
}

function solution(a, b) {
    
    let wonderM = getMonthLabel(a),
        wantedDate = (b + " " + wonderM +  " " +" 2016"),
        t = JSON.parse(JSON.stringify(wantedDate)),
        result = new Date(t).getDay(),
        rDay = getTodayLabel(result);
    
    return rDay;
}

/* 테스트 */
let i =  solution(2, 29);

console.log(i + "DAY");

 

[실행 결과]

...더보기
테스트 1
입력값 5, 24
기댓값 "TUE"
실행 결과 테스트를 통과하였습니다.
출력 MON

테스트 결과 (~˘▾˘)~

1개 중 1개 성공

 

[코드 채점]

...더보기

정확성 테스트

테스트 1 통과 (1.68ms, 37.3MB)
테스트 2 통과 (1.63ms, 37.3MB)
테스트 3 통과 (1.69ms, 36.9MB)
테스트 4 통과 (1.70ms, 36.9MB)
테스트 5 통과 (1.65ms, 36.8MB)
테스트 6 통과 (1.65ms, 37.5MB)
테스트 7 통과 (1.69ms, 36.7MB)
테스트 8 통과 (1.67ms, 36.8MB)
테스트 9 통과 (1.67ms, 36.7MB)
테스트 10 통과 (1.68ms, 36.9MB)
테스트 11 통과 (1.67ms, 37MB)
테스트 12 통과 (1.65ms, 37.1MB)
테스트 13 실패 (3.09ms, 37.1MB)
테스트 14 통과 (1.64ms, 36.8MB)

채점 결과

정확성: 92.9

합계: 92.9 / 100.0

 

이번에도 100점이 아니다ㅠㅠ 그런데 이번엔 뭐가 틀렸는지 진짜 모르겠다.

뭔가 문제가 있으니 패스가 안되겠지..? 이따 오키에 물어본 답변이 올라오면 마저 작성해야겠다.

 

 


멍청이는 답을 찾았다

const MONTH = new Array('January', 'Feburary', 'March', 'April', 'May', 'June', 'July', 'August', 'Setpember', 'October', 'November', 'December');

September인데 Setpember라고 쳤다 이 바보..ㅎ

OKKY에 물어봤더니 저거 짚어주셔서 완전 머쓱...저거 고치니까 100점 뜨더라 하 오늘도 제 부주의함에 무릎을 탁 치고 갑니다.

 


[완성 코드]

function getMonthLabel(a) {
    const MONTH = new Array('January', 'Feburary', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
    let monthLabel = MONTH[a-1];    //배열 MONTH의 index는 0부터 시작하기 때문!
    
    return monthLabel;
}

function getTodayLabel(today) {
    
    const week = new Array('SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT');
    let todayLabel = week[today];
    
    return todayLabel;
}

function solution(a, b) {
    
    let wonderM = getMonthLabel(a),
        wantedDate = (b + " " + wonderM +  " " +" 2016"),
        t = JSON.parse(JSON.stringify(wantedDate)),
        result = new Date(t).getDay(),
        rDay = getTodayLabel(result);
    
    return rDay;
}

/* 테스트 */
let i =  solution(2, 29);

console.log(i + "DAY");

 


오늘의 교훈 : 철자를 잘보자