728x90
Python
days = ['THU','FRI','SAT','SUN','MON','TUE','WED']
months = [31,29,31,30,31,30,31,31,30,31,30,31]
def solution(a, b):
my_days = (sum(months[:a-1]) + b) % 7
answer = days[my_days]
# answer = []
return answer
달별로 날짜 계산를 활용해야겠다는 생각까지는 했는데 %(modulo) 오퍼레이터를 사용해서 나머지를 활용한 indexing까지는 생각이 안났다.
Javascript
Javascript로 Sum을 하기위해서 찾아보니 reduce를 사용한다고 나온다.
하지만 slicing할 때 1월일 경우 start = end인 상황에서 에러가 발생.
다른 솔루션들을 검색해보니 getDay라는 메서드를 사용하면 바로 풀리긴하는데,
getDay를 안쓰고 해결하는 방법들은 나처럼 slicing을 하지 않고 "+="를 사용해서 해결하는 방법이 존재한다.(for loop를 사용해야 한다는 점)
어쨋든 python처럼 sum을 사용하려고 찾으려다가 reduce를 배웠다는 것.
function solution(a, b) {
let days = ['THU','FRI','SAT','SUN','MON','TUE','WED'];
let months = [31,29,31,30,31,30,31,31,30,31,30,31];
let tmp = 0
for (let i=0; i < a-1; i++) {
tmp += months[i];
};
let answer = days[(tmp+b) % 7]
return answer;
}
getDay 메서드 솔루션
function solution(a, b) {
let answer = '';
let day=["SUN","MON","TUE","WED","THU","FRI","SAT"]
const date = new Date(`2016,${a},${b}`);
answer = (day[date.getDay()])
return answer;
}
Array.prototype.reduce()
The reduce() method executes a reducer function (that you provide) on each element of the array, resulting in single output value.
const array1 = [1, 2, 3, 4];
const reducer = (accumulator, currentValue) => accumulator + currentValue;
// 1 + 2 + 3 + 4
console.log(array1.reduce(reducer));
// expected output: 10
// 5 + 1 + 2 + 3 + 4
console.log(array1.reduce(reducer, 5));
// expected output: 15
728x90
'Algorithm' 카테고리의 다른 글
[프로그래머스] 3진법 뒤집기 (JS, Python) (0) | 2021.01.26 |
---|---|
[프로그래머스] 가운데 글자 가져오기 (JS, Python) (0) | 2021.01.25 |
[프로그래머스] 두 개 뽑아서 더하기 (JS, Python) (0) | 2021.01.25 |
[프로그래머스] k번째 수 (JS, Python) (0) | 2021.01.24 |
[프로그래머스] 체육복 (javascript) (0) | 2021.01.23 |
댓글