미누에요
[백준 16431번] 베시와 데이지 - C99 본문
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
'알고리즘' 카테고리의 다른 글
[백준 1009번] 분산처리 - C99 (0) | 2023.06.03 |
---|---|
[백준 23825번] SASA 모형을 만들어보자 - C99 (0) | 2023.06.03 |
[백준 19698번] 헛간 청약 - C99 (0) | 2023.06.03 |
[백준 17388번] 와글와글 숭고한 - C99 (0) | 2023.06.03 |
[백준 17362번] 수학은 체육과목입니다 - C99 (0) | 2023.06.03 |