▽문제 바로가기
https://codeup.kr/problem.php?id=2628
입력
첫 번째 줄에는 첫 번째 현의 정보를 나타내는 두 정수 a, b가
두 번째 줄에는 두 번째 현의 정보를 나타내는 두 정수 c, d가 입력된다.
(1<=a,b,c,d<=100 : a,b,c,d는 모두 다르다.)
출력
주어진 두 잘린 부분이 교차한다면 "cross", 교차하지 않는다면 "not cross"를 출력한다.
문제 풀이
4조각을 만드는 조건을 찾아야 합니다. 손으로 요리조리 하다 보면 그 조건을 찾을 수 있습니다.
한 선을 기준으로 잡으면 나머지 한 선에서 한 점은 기준 선 사이 값을 나머지 한 점은 기준선 밖에 값을 가지면 됩니다.
예를 들어 a, b를 기준으로 잡았으면 c, d 중 한 값은 a와 b 사이 값을 가지고 나머지 한 값은 a와 b 범위 밖(?)의 값을 가지면 됩니다.
정렬을 수행하면 편합니다.
#include <stdio.h>
#include <algorithm>
using namespace std;
int main() {
int a[2], b[2];
scanf("%d%d", &a[0], &a[1]);
scanf("%d%d", &b[0], &b[1]);
//정렬
sort(a, a+2);
sort(b, b+2);
//a[0]과 a[1]을 기준이라 생각했을때
//b[0]이 a[0]과 b[1]사이에 있고
if(b[0]>a[0]&&b[0]<a[1]){
//b[1]이 a[0]과 a[1]범위 밖에 있으면 cross
if(b[1]>a[1]) printf("cross");
else printf("not cross");
}
//b[1]이 a[0]과 b[1]사이에 있고
else if(b[1]>a[0]&&b[1]<a[1]){
//b[0]이 a[0]과 a[1]범위 밖에 있으면 cross
if(b[0]<a[0]) printf("cross");
else printf("not cross");
}
else printf("not cross");
return 0;
}
'알고리즘' 카테고리의 다른 글
[C/C++] 코드업(codeup) 2640번 n의 k승 구하기 2 (0) | 2020.01.23 |
---|---|
[C/C++] 코드업(codeup) 2631번 보물 찾기 (0) | 2020.01.21 |
[C/C++] 코드업(codeup) 3011번 거품 정렬(Bubble Sort) (0) | 2020.01.19 |
[C++] 코드업(codeup) 3004번 데이터 재정렬 (0) | 2020.01.18 |
[C/C++] 크루스칼 알고리즘(Kruskal algorithm) (0) | 2020.01.17 |