본문 바로가기

_BOJ/_C , C++

BOJ_1085 : 직사각형에서 탈출 C

반응형

아래 설명과 그림이 첨부되어 있습니다. 내가 독해력이 딸려서 뭔 이야기여...하고 구글링해봤음. 괜히 SOLVED.AC 기준으로 브론즈2 문제였던게 아녔음.

 

문제

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

입력

첫째 줄에 x y w h가 주어진다. w와 h는 1,000보다 작거나 같은 자연수이고, x는 1보다 크거나 같고, w-1보다 작거나 같은 자연수이고, y는 1보다 크거나 같고, h-1보다 작거나 같은 자연수이다.

출력

첫째 줄에 문제의 정답을 출력한다.

예제 입력 1

6 2 10 3

예제 출력 1

1

#include <stdio.h>

int main(void) {
    int square[5]={0,};;
    int i,x,y,w,h;
    scanf("%d %d %d %d",&x, &y, &w, &h);
    square[0]=x;
    square[1]=x;
    square[2]=h-y;
    square[3]=w-x;
    square[4]=y;//그림참조
    for(i=0;i<5;i++)
    {//최소값을 0으로 두고 다 대입해봄.
        if(square[0]>square[i])
        {
            square[0]=square[i];
        }
    }
    printf("%d",square[0]);
    return 0;
}

이 문제는 그림을 그려보면 쉬운데.

마우스로 그려서 이상한데. 한점을 X,Y라고 하고 사각형의 반대끝이 W,H점이니까

4개의 선 X, Y, H-Y, W-X 이렇게 네개 나오고.

 

난 그걸 배열을 이용해서 풀었다.

#include <stdio.h>

int main(void) {

int square[5]={0,};; //비어있는 다섯칸짜리 배열을 만들어뒀다.

배열은 항상 필요한크기 + 1개. 널문자 들어갈 자리 생각해 줘야한다.

int i,x,y,w,h;

scanf("%d %d %d %d",&x, &y, &w, &h);

square[0]=x; //일단 초기값으로 x 가져왔음. 여긴 값이 덮어씌워질 예정이라서

square[1]=x;

square[2]=h-y;

square[3]=w-x;

square[4]=y; //그림참조

for(i=0;i<5;i++)

{//최소값을 0으로 두고 다 대입해봄.

if(square[0]>square[i])

{

square[0]=square[i];

}

}

printf("%d",square[0]);

return 0;

}

반응형

'_BOJ > _C , C++' 카테고리의 다른 글

BOJ_18268 : COW GYMNASTICS, 소체조  (0) 2020.03.27
BOJ_2941 : 크로아티아 알파벳 C  (0) 2020.03.20
BOJ_2798 : 블랙잭 C  (0) 2020.03.17
[백준] BOJ_5622:다이얼 C  (0) 2020.02.23
BOJ_1157:단어공부/C  (0) 2020.02.21