상세 컨텐츠

본문 제목

[백준]BOJ_브론즈3_1085번 직사각형에서 탈출_C언어

알고리즘/C

by 셉인 2022. 9. 11. 10:53

본문

728x90

1085번: 직사각형에서 탈출 (acmicpc.net)

 

1085번: 직사각형에서 탈출

한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램

www.acmicpc.net

<참고용>

#include <stdio.h>

int main() {
    int x = 0, y = 0, w = 0, h = 0;
    scanf("%d %d %d %d", &x, &y, &w, &h);
    if (w - x > h - y&&h-y<y&&h-y<x) {
        printf("%d", h-y);
    }
    else if (h - y > w - x&&w-x<y&&w-x<x) {
        printf("%d", w-x);
    }
    else if (h - y > y && w-x>y&&x>y) {
        printf("%d", y );
    }
    else if (h - y > x && w - x > x && y > x) {
        printf("%d", x);
    }
    else if (w - x == h - y) {
        printf("1");
    }
    
    return 0;
} //틀린 코드

위 else if 마지막에 1로 정의를 내렸는데 1로 정의를 내리는 것이 아닌 새로운 조건을 찾아서 넣어줘야합니다.

#include <stdio.h>

int main() {
    int x = 0, y = 0, w = 0, h = 0;
    scanf("%d %d %d %d", &x, &y, &w, &h);
    if (w - x > h - y&&h-y<y&&h-y<x) {
        printf("%d", h-y);
    }
    else if (h - y > w - x&&w-x<y&&w-x<x) {
        printf("%d", w-x);
    }
    else if (h - y > y && w-x>y&&x>y) {
        printf("%d", y );
    }
    else if (h - y > x && w - x > x && y > x) {
        printf("%d", x);
    }
    else if (h - y == w - x && x > y)
    {
        printf("%d", y);
    }
    else if (h - y == w - x && y > x)
    {
        printf("%d", x);
    }
    else if (h - y == w - x && y == x) {
        printf("%d", x);
    }
    return 0;
}

조건을 3개 추가한 것을 볼 수 있습니다. 

<코드해석>

조건 1) h-y를 출력

w-x보다 작고, y,x보다 작으면 h-y를 출력해준다.

조건 2) w-x를 출력

h-y보다 작고, y,x보다 작으면 w-x를 출력해준다.

조건 3) y를 출력

h-y,w-x,x보다 y가 작으면 y를 출력해준다.

조건 4) x를 출력

h-y,w-x,x보다 y가 작으면 y를 출력해준다.

****중요 조건(못 찾아서 틀렸었습니다.)

조건 5,6)h-y와 w-x가 같을 경우에 x가 작다면 x를 y가 작다면 y를 출력해준다.

조건 7)h-y와 w-x가 같을 경우에 x와 y가 같다면 x나 y를 출력해준다.

 

해당 조건들을 잘 파악해주시면 쉽게 푸실 수 있으실 것입니다 ✨

728x90

관련글 더보기

댓글 영역