본문 바로가기

Algorithm/BaekJoon

[14681] 사분면고르기 (nested if VS && )

728x90

https://www.acmicpc.net/problem/14681

 

14681번: 사분면 고르기

점 (x, y)의 사분면 번호(1, 2, 3, 4 중 하나)를 출력한다.

www.acmicpc.net

 

 

 

사분면 고르기는 다음과 같이 코드를 짤 수 있다.

 

1) Nested if 

/*
 * 백준 - 단계별 문제풀이 : if문
 * 14681번
 *
 * 사분면 고르
 * 점의 좌표를 입력받아 그 점이 어느 사분면에 속하는지 알아내는 프로그램을 작성하시오.
 * 단, x좌표와 y좌표는 모두 양수나 음수라고 가정한다.
 *
 */

#include <iostream>

int solution(int x, int y) {
    if (x > 0) { // 1,4
        if (y > 0) return 1;
        else return 4;
    } else {
        if (y > 0) return 2;
        else return 3;
    }
}


int main() {

    // x좌표, y좌표 입력받기
    int x, y;
    std::cin >> x >> y;

    std::cout << solution(x, y) << std::endl;
}

 

 

2) &&

/*
 * 백준 - 단계별 문제풀이 : if문
 * 14681번
 *
 * 사분면 고르
 * 점의 좌표를 입력받아 그 점이 어느 사분면에 속하는지 알아내는 프로그램을 작성하시오.
 * 단, x좌표와 y좌표는 모두 양수나 음수라고 가정한다.
 *
 */

#include <iostream>

int solution(int x, int y) {
    if(x>0&&y>0)
        return 1;
    else if(x<0&&y>0)
        return 2;
    else if(x<0&&y<0)
        return 3;
    else if(x>0&&y<0)
        return 4; 
}


int main() {

    // x좌표, y좌표 입력받기
    int x, y;
    std::cin >> x >> y;

    std::cout << solution(x, y) << std::endl;
}

 

 

갑자기 궁금해졌다.

&&로 조건을 연결하는 것과, if문을 중첩해서 사용하는 것중에 무엇이 더 효율적일까? 

which is faster && or nested if? 

→ 궁금했는데 딱히 명확하게 답해진 곳은 없고, 

  둘의 차이점은 chain으로 묶인 표현이, if문으로 비교 한 후 추가적인 연산을 수행한다는 것이다.  

 

 하지만 둘의 성능적 차이는 거의 없으며,

  코드의 가독성이 더 중요하게 여겨지므로 &&를 사용하라는 의견이 많았다 

https://stackoverflow.com/questions/36731898/why-nested-if-statement-is-faster-than-using-operator

 

Why nested if-statement is faster than using && operator?

Actually I'm wonder, why when I use multiple conditions into one if-statement is slower than multiple separated if-statement? In other word, why using && is slow? Consider this: $a = 1; $...

stackoverflow.com

 

728x90

'Algorithm > BaekJoon' 카테고리의 다른 글

[1193] 분수찾기  (0) 2021.08.28
[2292] 벌집  (0) 2021.08.28
[15552] 빠른 A+B - ios_base::sync_with_stdio(false)와 cin.tie(null)  (0) 2021.08.27
[2741]N 찍기 - "\n" vs endl  (0) 2021.08.27
[10818] 최소, 최대  (0) 2021.04.27