[프로그래머스] 2016년, 수박수박수박수박수박수? - JS
2022. 8. 10. 14:26ㆍAlgorithm
2016년
문제 설명
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" |
나의 풀이
function solution(a, b) {
return new Date(2016, a - 1, b).toString().slice(0, 3).toUpperCase();
}
- 자바스크립트의 Date 객체를 사용해 원하는 날짜를 생성한다 >> 2016-05-23T15:00:00.000Z
- toString() 메서드를 사용해 문자열로 변환하면 자동으로 이렇게 변한다 >> Tue May 24 2016 00:00:00 GMT+0900
- 요일 값을 구하기 위해 slice() 메서드로 자른다 >> Tue
- toUpperCase() 메서드를 사용해 대문자로 변환 후 값을 반환한다 > TUE
다른 사람의 풀이
function solution(a, b) {
let month = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
let week = ["FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"];
let sum = b - 1;
for (let i = 0; i < a - 1; i++) {
sum += month[i];
}
return week[sum % 7];
}
날짜와 요일을 배열로 만들어, 일수를 계산하여 요일 값을 찾아냈다.
문제 링크
https://programmers.co.kr/learn/courses/30/lessons/12901
수박수박수박수박수박수?
문제 설명
길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를 들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.
제한 조건
- n은 길이 10,000이하인 자연수입니다.
입출력 예
n | return |
3 | "수박수" |
4 | "수박수박" |
나의 풀이
function solution(n) {
let arr = [];
for (let i = 1; i <= n; i++) {
if (i % 2 !== 0) arr.push("수");
else arr.push("박");
}
return arr.join("");
}
반복문으로 홀수에는 "수", 짝수에는 "박"을 배열에 넣고, 문자열로 변환해서 값을 리턴했다.
다른 사람의 풀이
function solution(n) {
return answer = "수박".repeat(n).slice(0, n);
}
문자열을 주어진 횟수만큼 반복하는 repeat() 메서드를 사용한 것이 인상적이었다.
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/12922
반응형
'Algorithm' 카테고리의 다른 글
[프로그래머스] 자릿수 더하기, 자연수 뒤집어 배열로 만들기 - JS (0) | 2022.08.11 |
---|---|
[프로그래머스] 이상한 문자 만들기 - JS (0) | 2022.08.11 |
[프로그래머스] 완주하지 못한 선수 - JS (0) | 2022.08.11 |
[프로그래머스] 정수 내림차순으로 배치하기 - JS (0) | 2022.08.06 |
[프로그래머스] 나누어 떨어지는 숫자 배열 - JS (0) | 2022.08.06 |