각도기

문제 링크

각도기

분석

각 조건별로 반환하는 값이 달라지는 문제입니다.

if문과 if else문을 사용하거나 삼항연산자를 사용할 수 있습니다.

우선 if문과 else문을 사용할 경우에 대해 알아보겠습니다.
이 경우 <(작다 연산자)와 ==(동등 연산자)같은 비교연산자를 알고있어야합니다.
&&(논리 AND 연산자)를 사용해야 합니다.

삼항연산자의 경우 중첩한 상태를 사용하거나 조금 복잡한 코드를 작성해야합니다.
중첩하여 사용하지 않는 방법으로 작성해보겠습니다.

풀이

우선 if문을 사용하는 방법에 대해 알아보겠습니다.

int solution(int angle) {
    int answer = 0;
    
    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;
}

if문은 {}를 사용하지 않더라도 실행할 코드가 한줄이므로 생략했습니다.

비교연산자들과 논리 연산자는 링크로 대체하겠습니다.
비교 연산자
논리 연산자


다음으로 삼항 연산자를 사용하는 방법을 알아보겠습니다.

int solution(int angle) {
    int answer = (angle % 90 == 0) ? angle / 90 * 2 : angle / 90 * 2 + 1;
    
    return answer;
}

삼항 연산자의 조건문인 angle % 90 == 0부터 살펴보겠습니다.
조건문이 참일 경우는 직각이거나 평각일 경우입니다.
조건문이 거짓일 경우는 예각이거나 둔각입니다.
각각 참과 거짓의 경우 반환해야할 값이 2와 4, 1과 3으로 짝수와 홀수로 정해져있습니다.

이 규칙을 활용해 참일 경우 각도의 크기를 90으로 나눕니다.
이 경우 직각은 90도이므로 1이라는 값이 나오며, 평각은 180도이므로 2라는 값이 나옵니다.
이렇게 결과값은 지금 각이 직각인지 평각인지 알 수 있는 값이 됩니다.
해당 값에 *2를 해주면 정해진 값을 반환할 수 있습니다.

거짓일 경우에도 마찬가지로 각도의 크기를 90으로 나눕니다.
나눈 결과값은 지금 각이 예각인지 둔각인지 같은 방법으로 알 수 있는 값이 됩니다.
해당 값에 *2를 하면 되지만 1씩 큰 홀수이므로 +1을 해줍니다.

성능 요약

if문에 대한 성능은 다음과 같았습니다.

테스트 1 〉 통과 (0.01ms, 4.21MB)
테스트 2 〉 통과 (0.01ms, 4.16MB)
테스트 3 〉 통과 (0.01ms, 4.21MB)
테스트 4 〉 통과 (0.01ms, 4.21MB)
테스트 5 〉 통과 (0.01ms, 4.04MB)
테스트 6 〉 통과 (0.01ms, 4.14MB)
테스트 7 〉 통과 (0.01ms, 4.15MB)
테스트 8 〉 통과 (0.01ms, 4.21MB)


삼항 연산자에 대한 성능은 다음과 같았습니다.

테스트 1 〉 통과 (0.01ms, 4.22MB)
테스트 2 〉 통과 (0.01ms, 4.22MB)
테스트 3 〉 통과 (0.01ms, 3.68MB)
테스트 4 〉 통과 (0.01ms, 4.16MB)
테스트 5 〉 통과 (0.01ms, 4.17MB)
테스트 6 〉 통과 (0.01ms, 4.15MB)
테스트 7 〉 통과 (0.01ms, 4.15MB)
테스트 8 〉 통과 (0.01ms, 3.59MB)

Programmers 카테고리 내 다른 글 보러가기

댓글남기기