[백준 16431] 베시와 데이지 (C#, C++) - soo:bak
작성일 :
문제 링크
설명
베시는 대각선을 포함해 8방향으로 이동하므로 이동 시간은 체비쇼프 거리가 됩니다. 데이지는 상하좌우 4방향만 이동하므로 이동 시간은 맨해튼 거리입니다.
두 소가 존의 위치까지 최단 경로로 이동할 때, 누가 더 빨리 도착하는지 비교하는 문제입니다.
접근법
먼저, 베시의 이동 시간은 행 차이와 열 차이 중 큰 값입니다.
다음으로, 데이지의 이동 시간은 행 차이와 열 차이의 합입니다.
이후, 두 이동 시간을 비교해 bessie, daisy, tie 중 하나를 출력합니다.
Code
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using System;
namespace Solution {
class Program {
static void Main(string[] args) {
var b = Console.ReadLine()!.Split();
var d = Console.ReadLine()!.Split();
var j = Console.ReadLine()!.Split();
var Br = int.Parse(b[0]);
var Bc = int.Parse(b[1]);
var Dr = int.Parse(d[0]);
var Dc = int.Parse(d[1]);
var Jr = int.Parse(j[0]);
var Jc = int.Parse(j[1]);
var mvB = Math.Max(Math.Abs(Jr - Br), Math.Abs(Jc - Bc));
var mvD = Math.Abs(Jr - Dr) + Math.Abs(Jc - Dc);
if (mvB < mvD) Console.WriteLine("bessie");
else if (mvB > mvD) Console.WriteLine("daisy");
else Console.WriteLine("tie");
}
}
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int Br, Bc, Dr, Dc, Jr, Jc;
cin >> Br >> Bc >> Dr >> Dc >> Jr >> Jc;
int mvB = max(abs(Jr - Br), abs(Jc - Bc));
int mvD = abs(Jr - Dr) + abs(Jc - Dc);
if (mvB < mvD) cout << "bessie\n";
else if (mvB > mvD) cout << "daisy\n";
else cout << "tie\n";
return 0;
}