본문 바로가기

Algorithm/Implementation

(C++, Rust) - 백준(BOJ) 25600 : Triathlon

반응형

https://www.acmicpc.net/problem/25600

 

25600번: Triathlon

트라이애슬론(Triathlon)이란 라틴어에서 $3$가지라는 의미를 가진 tri와 경기를 뜻하는 athlon의 합성어이다. 우리나라에서는 트라이애슬론 대신 철인 3종 경기로 알려져 있다. 트라이애슬론은 여러

www.acmicpc.net

간단한 구현 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

참가자 수와 각 참가자의 점수에 대한 변수를 선언 후 입력받습니다.

📔 풀이과정

매 참가자마다 점수를 a * (d + g) 공식으로 구합니다. 

a = (d + g) 라면 구한 점수에 2배를 곱해줍니다.

📔 정답출력

구한 점수들 중 가장 큰 값을 출력합니다.


📕 Code

C++

#include <bits/stdc++.h>
using namespace std;
int n, a, d, g;
vector <int> scores;
int main(){
    cin >> n;
    scores.resize(n);
    for(int i = 0; i < n; i++) {
        cin >> a >> d >> g;
        scores[i] = a * (d + g);
        if(a == d + g) {
            scores[i] *= 2;
        }
    }
    cout << *max_element(scores.begin(), scores.end());
}

 

Rust

use std::{cmp, io};
fn main() {
    let mut line = String::new();
    io::stdin().read_line(&mut line).expect("wrong io");
    let n = line.trim().parse::<i64>().unwrap();
    let mut ans = 0;
    for i in 0..n {
        let mut line = String::new();
        io::stdin().read_line(&mut line).expect("wrong io");
        let numbers: Vec<i64> = line
            .split_whitespace()
            .map(|num| num.parse::<i64>().unwrap())
            .collect();
        let a = numbers[0 as usize];
        let d = numbers[1 as usize];
        let g = numbers[2 as usize];
        let mut score = a * (d + g);
        if a == d + g {
            score *= 2;
        }
        ans = cmp::max(ans, score);
    }
    print!("{}", ans);
}

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.