※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 2756번 문제인 다트이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/2756
2756번: 다트
첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄에 12개의 실수(double-precision 값)가 있다. 각 쌍은 중심과 다트의 거리이고, x, y거리 순서이고 단위는 cm이다. 처음 3개의
www.acmicpc.net
원점과 주어지는 점 사이의 거리를 3, 6, 9, 12 및 15와 비교해 각 플레이어의 점수를 계산하고, 그 점수들을 비교해 문제가 요구하는 대로 출력하는 구현 문제이다.
<cmath> 헤더의 hypot 함수를 이용해 원점과 각 좌표 사이의 거리를 편하게 구해낼 수 있으니 참고하자.
아래는 제출한 소스코드이다.
#include <iostream>
#include <cmath>
using namespace std;
int T;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> T;
while (T--) {
int N = 0, M = 0;
for (int i = 0; i < 3; i++) {
double x, y; cin >> x >> y;
double dist = hypot(x, y);
if (dist <= 3) N += 100;
else if (dist <= 6) N += 80;
else if (dist <= 9) N += 60;
else if (dist <= 12) N += 40;
else if (dist <= 15) N += 20;
}
for (int i = 0; i < 3; i++) {
double x, y; cin >> x >> y;
double dist = hypot(x, y);
if (dist <= 3) M += 100;
else if (dist <= 6) M += 80;
else if (dist <= 9) M += 60;
else if (dist <= 12) M += 40;
else if (dist <= 15) M += 20;
}
if (N > M) cout << "SCORE: " << N << " to " << M << ", PLAYER 1 WINS.\n";
else if (N < M) cout << "SCORE: " << N << " to " << M << ", PLAYER 2 WINS.\n";
else cout << "SCORE: " << N << " to " << M << ", TIE.\n";
}
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 24448 // C++] 図書館 2 (Library 2) (0) | 2022.12.17 |
---|---|
[BOJ 15724 // C++] 주지수 (0) | 2022.12.17 |
[BOJ 2758 // C++] 로또 (0) | 2022.12.17 |
[BOJ 6841 // C++] I Speak TXTMSG (0) | 2022.12.17 |
[BOJ 26332 // C++] Buying in Bulk (1) | 2022.12.17 |