BOJ 2527 - 직사각형
KOI 초등부 지역본선이니까 풀기 무난하겠다고 생각했는데, 조금 오래 걸렸다.
머리로만 생각하지 말고 공책에 네모를 그려보면서 생각하면 쉽게 if문을 짤 수 있다.
-
주의할 점
- 나는 보통 이런 문제를 보면 다음과 같이 설계해버린다.
if(A 조건 만족하는 경우) return A else if(B 조건 만족하는 경우) return B else if(C 조건 만족하는 경우) return C else return D
물론 아닌 분들도 많으실거라 생각하지만.. 내 기준으로는 그렇다.
그런데 사실 이 문제는 ‘공통부분이 없음’의 기준을 찾는게 ‘공통부분이 직사각형인 경우’보다 찾기 훨씬 쉽다. 말 그대로 두 직사각형이 겹친데 없이 남남인 경우고, 이 가짓수는 다음과 같다.
- 첫 직사각형의 x2보다 두번째 직사각형의 x1값이 큰 경우
- 첫 직사각형의 x1이 두번째 직사각형의 x2값보다 큰 경우
- 첫 직사각형의 y2보다 두번째 직사각형의 y1값이 큰 경우
- 첫 직사각형의 y1이 두번째 직사각형의 y2값보다 큰 경우
코드 문자 ‘d’를 반환하는 경우를 정했으니 c와 b가 되는 경우를 찾고, 나머지는 a를 반환하면 된다.