반응형
https://www.acmicpc.net/problem/25286
25286번: 11월 11일
11월 11일에는 농업인의 날, 가래떡 데이, 보행자의 날, 대한민국 해군 창설 기념일, 유엔참전용사 추모의 날, 빼빼로 데이 등 다양한 의미를 가진 날이다. 성현이는 11월 11일의 11일 전은 10월 31일,
www.acmicpc.net
구현 문제였습니다. 표준 입출력, 자료구조 선언 및 접근 split을 사용해 볼 수 있는 문제였습니다.
📕 풀이방법
📔 풀이과정
* x월 x일의 x일 전은 항상 x월의 1달 전이며 그 달의 말일 입니다. 그렇게 각 월에 해당하는 말일을 vector변수에 저장하고 읽으며 정답을 매 test case마다 출력합니다.
* rust는 i8, i16, i32 등의 정수형 변수를 index를 접근하기 위해 a[m]으로 표현했을 때 error를 뱉습니다. index로 접근하기 위해 [] 사이에 들어갈 값의 자료형은 usize 뿐이기 때문입니다. 따라서 미리 명시적으로 형변환을 해 vector에 접근해야 합니다.
📔 정답출력
조건에 맞게 출력합니다.
📕 Code
use std::io;
fn main() {
let mut month = vec![0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
let mut test_case = String::new();
io::stdin().read_line(&mut test_case).expect("wrong io");
let test_case = test_case.trim().parse::<i32>().unwrap();
for i in 1..test_case + 1 {
let mut line = String::new();
io::stdin().read_line(&mut line).expect("wrong io");
line = line.trim().to_owned();
let numbers: Vec<i32> = line
.split_whitespace()
.map(|num| num.parse::<i32>().unwrap())
.collect();
let year = numbers[0];
let m = numbers[1];
if (year % 100 != 0 && year % 4 == 0) || (year % 400 == 0) {
month[2] = 29;
} else {
month[2] = 28;
}
if m == 1 {
println!("{} 12 31", year - 1);
} else {
println!("{} {} {}", year, m - 1, month[(m - 1) as usize]);
}
}
}
📕 Test Case
반례를 직접 작성해 보았습니다.
input
1
2000 1
답
1999 12 31
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
'Algorithm > Implementation' 카테고리의 다른 글
(Rust) - 백준(BOJ) 17094 : Serious Problem (0) | 2022.08.19 |
---|---|
(Rust) - 백준(BOJ) 16504 : 종이접기 (0) | 2022.08.18 |
(Rust) - 백준(BOJ) 9297 : Reducing Improper Fractions (0) | 2022.08.16 |
(C++) - 백준(BOJ) 9723 : Right Triangle (0) | 2022.08.14 |
(C++) - 백준(BOJ) 22380 : 割り勘 (0) | 2022.08.12 |