시리즈: 알고리즘 (32개 글)
- 자바로 알고리즘 풀기
- [Java] 백준 10431 - 줄 세우기
- [Java & Node.js] 백준 9935 - 문자열 폭발
- [Node.js] 백준 22866 - 탑 보기
- [Java] 백준 4485 - 녹색 옷 입은 애가 젤다지?
- [Node.js] 백준 1283 - 단축키 지정
- [Java & Node.js] 백준 14469 - 소가 길을 건너간 이유 3
- [Java] 백준 8979 - 올림픽
- [Node.js] 백준 22866 - 탑 보기
- [Java] 백준 7568 - 덩치
- [Java] 백준 1244 - 스위치 켜고 끄기
- [Node.js] 백준 19941 - 햄버거 분배
- [Node.js] 백준 1254 - 팰린드롬 만들기
- [Java] 백준 2589 - 보물섬
- [Java] 백준 2309 - 일곱 난쟁이
- [Java] 백준 1789 - 수들의 합
- [Java] 백준 1987 - 알파벳
- [Node.js] [Rust] 백준 24460 - 특별상이라도 받고 싶어
- [Node.js] 백준 7576 - 탑 보기
- [Rust] 백준 1047 - 울타리 (N^4 브루트포스 + 그리디)
- [Node.js] 백준 9657 - 돌게임3
- [Rust] 백준 4963 - 섬의 개수
- [Node.js] 프로그래머스 - 모의고사 / 실패율
- [Rust] 백준 2667 - 단지번호붙이기
- [Node.js] 프로그래머스 - 방문 길이
- [Node.js] 프로그래머스 - 괄호 회전하기
- [Rust] 백준 1002 - 터렛
- [Node.js] 프로그래머스 - 크레인 인형뽑기 게임
- [Node.js] 프로그래머스 - 기능개발
- [Rust] 백준 13717 - 포켓몬 GO
- [JavaScript] 백준 1092 - 배
- [Rust] 백준 25329 - 학생별 통화 요금 계산
어렵지 않은 구현 문제
문제 설명
- 2N개의 데이터 세트가 제공된다
- 포켓몬 이름
- 진화에 필요한 사탕 / 가지고 있는 사탕
- 진화 후 사탕을 2개 돌려준다
접근
2번에 적혀있는 대로 나눠버리면 되지 않을까 싶지만. 진화 후 2개를 돌려준다고 하기에,
그리고 N은 1 <= N <= 70 으로 그리 많지 않다.
그냥 하나하나 시뮬레이션 해도 무방하다.
또한 도감 번호가 가장 작은 포켓몬을 출력하며 되는데, 이는 이미 도감번호 순서로 제공해주기에 문제가 없다.
따라서 어떤 경우보다 큰 경우에만 갱신해주면 된다.
정답 코드
//! ## 포켓몬 고
//!
//! [문제 링크](https://www.acmicpc.net/problem/13717)
//!
//! 출력
//!
//! 총 마리수
//!
//! 많이 진화 가능한 포켓몬의 이름
use std::io::{self, Read};
pub fn main() {
let mut input = String::new();
io::stdin()
.read_to_string(&mut input)
.expect("인풋이 없습니다.");
// 진화 시킬 수 있는 총 포켓몬의 수와 많이 진화 가능한 포켓몬의 이름을 알아야 한다.
let mut total_evol: usize = 0;
let mut most_poke_name: String = String::new();
let mut most_poke_cnt: usize = 0;
let mut lines = input.lines();
let n: usize = lines.next().unwrap().parse().unwrap();
for i in 0..n {
let name = lines.next().unwrap();
let info: Vec<usize> = lines
.next()
.unwrap()
.split_ascii_whitespace()
.map(|s| s.parse().unwrap())
.collect();
let need_cd = info[0];
let mut cur_cd = info[1];
let mut tmp_evol: usize = 0;
while cur_cd >= need_cd {
// 총량 증가
cur_cd = cur_cd - need_cd;
cur_cd += 2;
total_evol += 1;
tmp_evol += 1;
}
if tmp_evol > most_poke_cnt {
most_poke_name = name.to_string();
most_poke_cnt = tmp_evol;
}
}
println!("{}", total_evol);
println!("{}", most_poke_name);
}
- 어차피 두 줄 출력하는 문제기에, 그냥
println!을 사용했다. - 변수를 여러개 선언하면 해결될 것 같아서 일단 마구 선언해봤다.
마무리하며
면접 이후에 조금 멘탈이 흔들린 감이 있지만
쉬운 문제를 통해서 마음을 다잡는 루틴을 새롭게 만들어보려고 한다.
더 열심히 하면 되는 것입니다 입니다.
포기하지 않으면 되는 것.
화이팅화이팅
-뱅-
