Minwoo Dev.

[백준 16431번] 베시와 데이지 - C99 본문

백준

[백준 16431번] 베시와 데이지 - C99

itisminu 2023. 6. 3. 16:02
728x90
반응형
SMALL

 

위의 문제를 해결하기 위해 존, 베시, 데이지의 위치를 입력받는 변수를 할당하였고, 그 변수에 값을 입력받아 진행하는 방식으로 프로그램을 구성하였다.

 

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

typedef struct Point{
    int r;
    int c;
    int result;
} Point;

int dist(Point a, Point b)
{
    int result = abs((a.r)-(b.r))+abs((a.c)-(b.c));
    return result;
}

int main(void)
{
    Point Bessie;
    Point Daisy;
    Point John;
    scanf("%d %d",&Bessie.r,&Bessie.c);
    scanf("%d %d",&Daisy.r,&Daisy.c);
    scanf("%d %d",&John.r,&John.c);

    double d1 = dist(Bessie,John);
    int d2 = dist(Daisy,John);

    Bessie.result = (ceil)(d1/2);
    Daisy.result = d2;

    if(Bessie.result>Daisy.result){
        printf("daisy\n");
    }
    else if(Bessie.result<Daisy.result){
        printf("bessie\n");
    }
    else{
        printf("tie\n");
    }

    return 0;
}

 

구조체를 사용하여 r, c를 하나의 타입으로 만들어 사용하였다.

나는 아래와 같은 점을 파악하였다.

- Daisy는 두 점의 거리가 최단 이동거리이다.

- Bessie는 두 점의 거리를 2로 나눈 값을 올림한 값이 최단이동거리이다.

위 문장에서 거리는 각 점의 차이를 절댓값을 씌워 더한 값을 의미한다.

(dist 함수로 구현함)

int 형 절댓값을 반환하는 abs 함수를 사용하기 위해 stdlib.h 헤더파일을 사용하였으며, 올림을 수행하는 ceil 함수를 사용하기 위해 math.h 헤더파일을 사용하였다.

math.h 헤더파일에도 fabs라는 절댓값 함수가 있었는데, 이 프로그램에서는 int형을 다루고 있으니 사용하지 않았다.

728x90
반응형
LIST