논리연산자 || 와 &&

 

각도기 문제풀다가 깨닫게된 아주 기본적이지만 놓고 지나쳤던 논리연산자 

 

**문제 설명

각에서 0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각 180도는 평각으로 분류합니다. 각 angle이 매개변수로 주어질 때 예각일 때 1, 직각일 때 2, 둔각일 때 3, 평각일 때 4를 return하도록 solution 함수를 완성해주세요.

 

처음에는 

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
    }
};

이렇게 쓰면 간단하게 될줄알았는데 자꾸 return 값이 1만나오길래 왜 밑에 식으로 못내려가나 했더니

매개변수의 조건을 저렇게 중복거는건 그냥 내가 생각하는 수학기호고 
논리 연산자를 써야한다는 것을 알았다.

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

 

이거 덕분에 논리연산자를 찾아보면서 알게된점

논리합 연산자 || 는  

둘중에 하나만 true면 반환하지만 왼쪽 피연산자를 우선시 판단한다.

논리합 연산자 패턴 단축평가 결과
값 || true
값 || false
true || 값 true
false || 값
값A || 값B 값A

출처: https://curryyou.tistory.com/193 [카레유:티스토리]

 

논리곱 연산자 &&는

둘다 true여야만 반환하므라 왼쪽 피연산자가 false면 바로 false로 판단한다.

논리곱 연산자 패턴 단축평가 결과
false && 값 false
true && 값
값 && false false
값 && true true
값A && 값B 값B

출처: https://curryyou.tistory.com/193 [카레유:티스토리]

 

**다른 풀이중 이해되는것 중에 깔끔하게 쓰는 것 (삼항연산자 이용)

function solution(angle) {
    return angle < 90 ? 1 : angle === 90 ? 2 : angle < 180 ? 3 : 4;
}       //   90도 보다 낮아? 1뽑고 아니야? 90도랑같아? 2뽑고 아니야? 180도보다 낮아? 3뽑고
        //    아니야? 그럼 4뽑아

 

--------------------------------------------------------------------------------------------------------------------------------------------  

for문과 함수의 나가는 부분에 위치 확실히 보면서 return 넣어주기

function solution(n) {
    let answer = 0;
    for (let i=0; i<=n; i++){
    if (i%2 == 0) {   // 이부분에서 계속 if(n%2 == 0) 으로 해놔서 안되는 이유를 오래해맸음             
        answer += i;
     }                         
    }  // 자꾸 여기에 return 넣어줘서 함수가 실행안됐었음
     return answer;
}


//계속 더해야한다 => for문 돌리기 , 함수끝나는 곳에서 return이 나와야한다.
// n을 2로 나눠서 짝수를 판단하는게아니라 n안에있는 요소i들 을 2로나눠서 짝수로판단

 

다른 풀이중 이해되는것 중에 알아 가는것  (요소(i)를 2부터 시작하고 for문에 증감을 더하기할당 +=를 이용해 2씩 추가하게하여 if문을 생략해서 짧게만듬)

function solution(n) {
    var answer = 0;

    for(let i=2 ; i<=n ; i+=2) // i를 2부터시작하고 더하기할당+=를 활용해 요소를2씩추가
        answer += i;

    return answer;
}

'Javascript > 프로그래머스 0단계부터' 카테고리의 다른 글

2023.12.19  (2) 2023.12.19

1-1.몫구하는 수식 Math.floor(x)  // 내림처리

//floor는 영어로 바닥을 의미 그래서 정수뒤에 소수점(like 바닥)을 버린다고 생각하면됨.//

입력받은 숫자보다 작거나 같은 정수 중 가장 큰 정수를 리턴합니다.

즉, 입력받은 숫자를 내림한 정수를 리턴하는 함수입니다.

console.log(Math.floor(5.95));
// Expected output: 5

console.log(Math.floor(5.05));
// Expected output: 5

console.log(Math.floor(5));
// Expected output: 5

console.log(Math.floor(-5.05));
// Expected output: -6

1-2.  Math.ceil(x) // 올림처리

//**ceil은 영어로 천장을 의미 그래서 정수뒤에 소수점부분이있으면 정수 올림//

입력받은 숫자보다 크거나 같은 정수 중 가장 작은 정수를 리턴합니다.

즉, 입력받은 숫자를 올림한 정수를 리턴하는 함수입니다.

Math.ceil(0.95); // 1
Math.ceil(4); // 4
Math.ceil(7.004); // 8
Math.ceil(-0.95); // -0
Math.ceil(-4); // -4
Math.ceil(-7.004); // -7

 

1-3. Math.round(x) // 반올림처리 

말그대로 반올림 해서 정수처리해줌  // 0.5는 반올림해줌

Math.round(20.49); //  20
Math.round(20.5); //  21
Math.round(42); //  42
Math.round(-20.5); // -20
Math.round(-20.51); // -21

1-4. Math.trunc(x) // 단순하게 소수점제외하고 양수,정수 상관없이 정수(integer)만 뽑는 함수

Math.trunc(13.37); // 13
Math.trunc(42.84); // 42
Math.trunc(0.123); //  0
Math.trunc(-0.123); // -0
Math.trunc("-1.123"); // -1    ** 아주신기하게 string형인데도 그냥 싹다무시하고 정수만뽑아줌
Math.trunc(NaN); // NaN
Math.trunc("foo"); // NaN
Math.trunc(); // NaN

 

2.나머지구하는 수식 %

console.log(3%2) //  나머지 1 뽑아줌
console.log(4%12) // 나머지 0 뽑아줌

 

3. 갑자기 if else 써보다 우연히 검색된 if와 else if 의 차이점

if 여러개쓰는건 것과 else if문 차이 

if문 여러개쓰는 것은 앞에if문이 참거짓에 상관없이 다른 if문도 실행하지만

else if 문의경우에는 앞에 if문이 참이면 뒤에 else if 문은 실행하지않는다.

 

 

'Javascript > 프로그래머스 0단계부터' 카테고리의 다른 글

23.12.20  (0) 2023.12.20

배열의 중요명령어들
**추가
a.push('f'); - 배열의 꼬리에 붙이는 것
a.concat(['f','g']); -2개이상의값을 '배열'로 붙이는 것
a.unshift('z'); - 배열의 머리에 붙이는 것
a.splice(추가할배열자리,(추가되는자리부터)삭제할배열갯수 ,'추가할 값1','추가할 값2', ...)
-배열중간에 값들을 추가하는 것
a.slice(시작자리,끝자리(생략하면 끝점까지 추출)) - 배열의원소중에 특정구간을 추출하는 것
                                                                    설정된 앞자리까지 추출
**제거
a.shift(); - 머리에있는 값을 제거
a.pop(); - 꼬리에있는 값을 제거
**정렬
a.sort(); - 순서대로 정렬
a.reverse(); - 역순으로 정렬

'Javascript' 카테고리의 다른 글

자바스크립트 - 함수  (0) 2023.11.01

자바스크립트 - 함수
함수의 형식
function 함수명 ( 매개변수,매개변수 ) {
코드
return 반환값;
}

함수명(인자,인자);

☆함수에서 중요한 것은 [재사용성!!]☆
동일한 코드가 있을 때 여러 곳에서 사용 할 수있는 형태(부품)로 만드는것. 
= 유지보수에 용이하다, 코드읽기가 좋아진다(가독성이 좋다)

반복문과 함수의 차이
반복문은 기계적으로 일정한 반복을 '그 자리'에서 실행할때 의미가있다.
함수는 반복적으로 실행되는 로직이 여러가지맥락으로 사용되어야하는경우에는 함수가 의미있다.

*입력
매개변수(parameter)
인자(argument) 
매개변수와인자는 여러 개 넣을 수 있지만 return값은 함수당 하나만가진다

*출력
-return 뒤에있는 값을 함수의 출력 값으로 반환하게된다.
-return이나오면 해당 함수를 종료시킨다. 함수안에있더라도 뒤에 나오는 코드는 동작하지않는다.

'Javascript' 카테고리의 다른 글

자바스크립트 - 배열  (0) 2023.11.02

+ Recent posts