하루에 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");
오늘의 교훈 : 철자를 잘보자
'코딩테스트 > JavaScript' 카테고리의 다른 글
[코딩테스트 연습] K번째 수_Level.01 (0) | 2019.04.15 |
---|---|
[코딩테스트 연습] 완주하지 못한 선수_Level.01 (0) | 2019.04.15 |