TIL_0620 알고리즘풀이

Koohyeon·2021년 6월 20일
0

Algorithm

목록 보기
16/19

첫 번째 문제

function solution(s) {
    let answer = '';
    let splits = s.split(" ");
    splits.map((word, index) => {
        for(let i = 0; i < word.length; i++) {
            if(i % 2 == 0) {
                answer += word[i].toUpperCase();
            } else answer += word[i].toLowerCase();
        }
        if(index != splits.length -1) answer += " "
    })
    return answer;
}

두 번째 문제

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년은 윤년입니다.

function solution(a, b) {
    let answer = '';
    if(a == 1) {
        let day = ["THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED"];
        for(let i = 0; i < 7; i++) {
            if(b % 7 == i) answer = day[i]
        }
    } else if(a = 2) {
        let day = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT",];
        for(let i = 0; i < 7; i++) {
            if(b % 7 == i) answer = day[i]
        }
    } else if (a == 3) {
        let day = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"];
        for(let i = 0; i < 7; i++) {
            if(i < 6 && b % 7 == i) answer = day[i+1]
            else if (i == 6 && b % 7 == i) answer = day[0];
        }
    }
    
    return answer;
}

시간내에 못 풀었다... 그래도 이제 틀려도 괜찮으니 무조건 접근해보자는 생각으로 코드를 짜보고있다. 좋은 방법인지는 모르겠지만 조금이라도 손대보는 것이 자신감을 준다.

다른 분들의 풀이

function solution(a, b) {
    var answer = '';
    let count = -1;
    const month = [31,29,31,30,31,30,31,31,30,31,30,31]
    const date = ['FRI','SAT','SUN','MON','TUE','WED','THU'] 

    for(let i =0; i < a-1;i++){
         count += month[i]
    }   
    count += b

    const final = count % 7 
    answer = date[final]

    return answer;
}
function solution1(a, b) {
    var answer = '';
    const date = new Date(`2016,${a},${b}`);
    let day= (date+"").split(' ');
     answer = day[0].toUpperCase();
    return answer;
}

0개의 댓글