코딩테스트

8월 9일 코딩테스트 풀이 - 나이 출력, 각도기

히새 2023. 8. 9. 23:18

🎈나이 출력

2022년 기준이니까 2022 - 나이 값을 한 뒤 +1 을 해줬다.

+1 인 이유는 우리나라 나이시스템 때문인가!?

 

 

 

🎈각도기

📃 문제 📃

맨 처음 if 문을 작성했는데 if 문이 아니라 s 로 시작하는.. 조건과 실행을 여러개 해 줄 수 있는 게 있었는데 ...

도저히 생각이 안나서 if 문을 검색해보던 중, else if 에도 조건을 주는 것이 가능하다는 것을 보고 이렇게 작성했다.

엄청난 오류들이 떴다.

 

마지막 else 때문에 그런가? 해서 코드를 수정해보았다.

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

뒤의 문제들도 결괏값이 1이 나온다는 것을 보고 혹시 조건마다 값을 return 해줘서 그런건가? 하고 생각해서

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

이렇게 작성해주었지만 여전히 테스트 결과는 똑같았다.

 

그리고 또 검색하다가 맨 처음 생각났던 s 로 시작하는 그것 을 찾았다

바로 switch 였다.

 

그런데 작성 처음부터 막혔다. 이거는 함수인데 함수 안에 switch 문을 어떻게 작성하는지 몰라서이다...

 

그래서 내가 작성한 if 문을 조금 더 수정해보기로 한다.

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

하나라도 틀리면 false 값을 내뱉는 && AND 연산자를 사용해 0 < angle < 90 을 분리해주었다.

그리고 angle = 90 에 == 으로 작성해주었다.

 

그 결과..! 테스트 통과!

1. && 연산자 사용
2. = 대신 == 값 입력

결론적으로 이 두가지 이유로 내 코드가 올바르게 작동했다는건데 어떠한 차이가 있는걸까?

실험 결과 이 두가지 중 하나만 안해줘도 올바르게 작동하지 않는다.

 

 

📑 = , == , === 의 차이

= 대입 연산자
== 동등 연산자
=== 일치 연산자

= 대입 연산자 : 값을 대입해 줄 때 사용한다.

== 동등 연산자 : 숫자와 문자열을 비교할 때, 문자열을 숫자로 반환한다.

=== 일치 연산자 : 형을 반환하지 않고 엄격하게 비교한다.

 

📑 조건은 한 번에 하나만 비교해야 한다.