※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 27522번 문제인 카트라이더: 드리프트이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/27522
27522번: 카트라이더: 드리프트
레드팀은 2, 4, 5, 6등을 달성하여 총 $20$점을, 블루팀은 1, 3, 7, 8등을 달성하여 총 $19$점을 기록하였다.
www.acmicpc.net
{시간, 팀}의 pair을 시간 오름차순으로 정렬하면 플레이어들을 1등부터 8등까지의 순서대로 정렬시킬 수 있다. 각 등수의 플레이어마다 팀을 확인해 해당 팀의 점수에 순위 점수를 더하고, 두 팀의 점수 중 어느 값이 더 큰지를 판단해 문제를 해결하자.
시간의 정렬은 문자열 상태로 유지하더라도 기본적으로 지원하는 문자열 사이의 비교 연산을 이용해 해낼 수 있다. 아래의 구현을 참고하자.
아래는 제출한 소스코드이다.
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int w[8] = { 10,8,6,5,4,3,2,1 };
int R, B;
pair<string, char> p[8];
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
for (int i = 0; i < 8; i++) cin >> p[i].first >> p[i].second;
sort(p, p + 8);
for (int i = 0; i < 8; i++) {
if (p[i].second == 'R') R += w[i];
else B += w[i];
}
if (R > B) cout << "Red";
else cout << "Blue";
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 10892 // C++] Divide into triangle (0) | 2023.03.01 |
---|---|
[BOJ 2559 // C++] 수열 (0) | 2023.03.01 |
[BOJ 10805 // C++] L 모양의 종이 자르기 (0) | 2023.02.28 |
[BOJ 10864 // C++] 친구 (0) | 2023.02.28 |
[BOJ 27227 // C++] Дивизионы (0) | 2023.02.28 |