반응형
단순 계산 문제임.
캥거루 1, 2가 다른 위치에서 다른 거리 만큼 점프를 하는데 점프 간격 시간은 같다. 캥거루 1, 2가 점프하기 시작한 후 동시에 같은 위치에서 점프하게 될 것인지 아닌지 여부를 구하는 문제.
조건 1 : a번째에 교차한다고 생각하면 더 먼 거리에서 시작한 캥거루의 점프 거리는 다른 캥거루보다 더 짧아야 한다.(v1>v2)
조건 2 : x2(더 먼 거리에서 시작한 캥거루의 시작 위치) + v2(더 먼 거리에서 시작한 캥거루의 점프 거리) * a번째점프 = x1(더 짧은 거리에서 시작한 캥거루의 시작 위치) + v1(더 짧은 거리에서 시작한 캥거루의 점프 거리)
use std::env;
use std::fs::File;
use std::io::{self, BufRead, Write};
/*
* Complete the 'kangaroo' function below.
*
* The function is expected to return a STRING.
* The function accepts following parameters:
* 1. INTEGER x1
* 2. INTEGER v1
* 3. INTEGER x2
* 4. INTEGER v2
*/
fn kangaroo(x1: i32, v1: i32, x2: i32, v2: i32) -> String {
if (v1 > v2) && ((x2 - x1) % (v1 - v2) == 0)
{
return "YES".to_string();
}
else
{
return "NO".to_string();
}
}
fn main() {
let stdin = io::stdin();
let mut stdin_iterator = stdin.lock().lines();
let mut fptr = File::create(env::var("OUTPUT_PATH").unwrap()).unwrap();
let first_multiple_input: Vec<String> = stdin_iterator.next().unwrap().unwrap()
.split(' ')
.map(|s| s.to_string())
.collect();
let x1 = first_multiple_input[0].trim().parse::<i32>().unwrap();
let v1 = first_multiple_input[1].trim().parse::<i32>().unwrap();
let x2 = first_multiple_input[2].trim().parse::<i32>().unwrap();
let v2 = first_multiple_input[3].trim().parse::<i32>().unwrap();
let result = kangaroo(x1, v1, x2, v2);
writeln!(&mut fptr, "{}", result).ok();
}
반응형
'HackerRank' 카테고리의 다른 글
[HackerRank] Subarray Division in Rust (0) | 2023.05.07 |
---|---|
[HackerRank] Breaking the Records in Rust (0) | 2023.05.06 |
[HackerRank] Apple and Orange in Rust (0) | 2023.05.01 |
[HackerRank] Grading Students in Rust (0) | 2023.04.30 |