[TIL] 내일배움캠프 React 과정 2022.12.10

Programmers 문제 풀기

각도기

function solution(angle) {
    switch (angle) {
        case 0 < angle < 90:
            return 1;
        case angle === 90:
            return 2;
        case 90 < angle < 180:
            return 3;
        case angle === 180:
            return 4;            
    }
}

며칠 전에 switch문을 공부했기 때문에 switch문으로 작성해봤지만 결괏값이 undefind가 뜬다. 혹시나 case 조건식을 넣으면 안 되는 건가 싶어 검색해 보니 안된다고 한다 ㅎㅎ

 

자바스크립트 switch 조건문 단점 : 상수

자바스크립트 swtich 조건문에는 case 값에 상수만 올 수 있고 변수, 조건식 등을 사용할 수 없다. (숫자 3, 문자 "Hello"와 같은 값을 상수라고 한다.)

 

function solution(angle) {
    if (0 < angle < 90) {
        return 1;
    } else if (angle === 90) {
        return 2;        
    } else if (90 < angle < 180) {
        return 3;
    } else if (angle === 180) {
        return 4;
    }
}

그래서 결국 if문으로 수정했다. 근데 이거 왜 전부 값을 1만 출력하지..? 어디가 잘못된 걸까🤔

 

function solution(angle) {
    if (0 < angle && angle < 90) {
        return 1;
    } else if (angle === 90) {
        return 2;        
    } else if (90 < angle && angle < 180) {
        return 3;
    } else if (angle === 180) {
        return 4;
    }
}

if문 조건에는 0<angle<90 이렇게 작성하면 안 되고 and 연산자를 이용해야 한다!! 이번 기회에 확실하게 배워간다 ㅎㅎ

 

 

다른 사람의 풀이 보면서 배우기

function solution(angle) {
    if (angle < 90) {
        return 1;
    } else if (angle === 90) {
        return 2;        
    } else if (angle === 180) {
        return 4;
    } else { 
        return 3;
    }
}

마지막에 else까지 사용하면 and 연산자를 사용하지 않아도 되고 코드가 간결해진다.

 

function solution(angle) {
    return angle < 90 ? 1 : angle === 90 ? 2 : angle < 180 ? 3 : 4;
}

삼항연산자를 이렇게 연속해서 사용할 수 있다는 걸 처음 알았다!

 

function solution(angle) {
    return [0, 90, 91, 180].filter(x => angle>=x).length;
}

어떻게 여기서 angle로 배열을 만들고 filter한 배열의 length 값을 출력할 생각을.... 대박이다😮

 

 

회고

오늘은 오후에 약속이 있어서 오전에 어제 다 못 들은 리액트 강의 잠깐 듣고 프로그래머스 문제 하나 풀었다. 그냥 깃헙에 잔디 깔려고 if문으로 쉬운 문제 하나 풀었는데 안 풀려서 당황했다. 다행히 다른 분의 도움을 받아 해결 ㅋㅋ 프로그래머스 문제 풀고 다른 사람들 풀이 확인할 때마다 대단한 답들이 많아서 항상 놀란다. 난 아직 응용력이 한참 부족한 거 같다 ㅋㅋ

 

그리고 갑자기 깃헙 닉넴 바꾸고 싶어서 고민하다가 heereal이 떠올랐는데 꽤나 마음에 든다. 혼자 생각할 때마다 킥킥대고 있음ㅎㅎ 내 이름이랑 발음이 비슷해서 약간 외국인 친구가 내 이름 부를 때 발음 같기도 하다😏