[BOJ] 2527 - 직사각형


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를 반환하면 된다.

    소스 코드