문제
해석
정수를 입력받아 조건에 따라 다른 결과를 리턴하는 문제입니다. 이전이 풀었던 점수에 따라 출력이 달라지는 문제와 알고리즘이 동일하는 점을 문제를 통해 알 수 있고, 조건만 이해하면 쉽게 풀 수 있습니다.
풀이
x, y값에 따라 사분면이 달라지고, 그 기준은 x가 양, 음일 때 y가 양, 음 일 때 달라짐을 문제의 그림을 통해 알 수 있습니다. 따라서 조건의 기준은 x가 0보다 큰지, 작은지 와 y가 0보다 큰지, 작은지에 대해 논리식을 세워야 할 것입니다.
처음에 이 문제를 봤을 때 x와 y가 0인 경우에는 어떻게 처리할지 궁금했는데 입력 조건을 보면 0이 될 수 없다는 점을 밝혔기 때문에 x와 y가 0인 되는 경우는 생각하지 않아도 됩니다.
종합적으로 문제의 조건은 다음과 같이 표현할 수 있습니다.
if(x>0 && y>0)
cout << 1;
else if (x>0 && y<0)
cout << 4;
else if(x<0 && y<0)
cout << 3;
else
cout << 2;
단순히 if ~ else 구문만 사용한다면 위와 같이 표현하지만 중첩 구문을 사용한다면 논리 식을 사용하지 않아도 됩니다.
if (x>0) {
if(y>0)
cout << 1;
else
cout << 4;
}
else{
if (y<0)
cout << 3;
else
cout << 2;
}
정리하면 결과는 다음과 같습니다.
Case 1: 조건식에 논리식을 사용한 경우
#include<iostream>
using namespace std;
int main(){
int x,y;
cin >> x >> y;
if(x>0&&y>0)
cout << 1 ;
else if (x>0&&y<0)
cout << 4;
else if(x<0&&y<0)
cout << 3;
else
cout << 2;
}
Case 2: 조건식에 중첩 if 문을 사용한 경우
#include<iostream>
using namespace std;
int main(){
int x,y;
cin >> x >> y;
if (x>0) {
if(y>0)
cout << 1;
else
cout << 4;
}
else{
if (y<0)
cout << 3;
else
cout << 2;
}
}
정리
제어문의 조건을 문제에 주어진 형태로 바꾸는 연습을 할 수 있는 문제입니다.
논리식을 사용하지 않은 중첩 if문이나 논리식을 사용하는 if ~ else문으로 문제를 풀 수 있습니다.
'프로그래밍 > 코딩 테스트 연습' 카테고리의 다른 글
[백준] 2525번 : 오븐 시계 (2단계) (C++) (0) | 2024.01.08 |
---|---|
[백준] 2884번 : 알람 시계 (2단계) (C++) (0) | 2024.01.08 |
[백준] 2753번 : 윤년 (2단계) (C++) (0) | 2024.01.07 |
[백준] 9498번 : 시험 성적 (2단계) (C++) (1) | 2024.01.07 |
[백준] 1330번 : 두 수 비교하기 (2단계) (C++) (0) | 2024.01.07 |