SMALL
오늘은 이전 포스팅 2024.11.14 - [알고리즘/프로그래머스] - 프로그래머스 - [PCCE 기출문제] 5번 / 심폐소생 C++
에 이어 6번 문제를 풀어보았다. 이때까지 풀었던 PCCE 기출문제 시리즈 중 개인적인 생각으로는 수학적인 사고능력이 부족하다면 문제 풀이가 오래 걸렸을 거라 생각이 든다.
알고리즘 난이도 및 시간 ( ※ 개인적인 의견 )
- 난이도 : Level 1.5 ( ※ Min : 0, Max : 10 )
- 풀이 시간 : 5분
- 제출 횟수 : 1번
- 풀이 결과 : Pass
문제 설명
문제는 지금 저수지에 남아 있는 물을 가지고 가뭄이 끝날 때까지 부족한지? 아니면 충분한지 계산하는 문제다. 딱히 문제에 함정이 존재하지는 않고, 매달 사용량 변화를 기반으로 총 필요한 물을 계산 후 저수지의 물과 비교 후 정답을 반환하면 되는 문제다.
제한 사항은 딱히 변수 Type에 영향을 줆만 한 범위도 없고, change는 처음부터 int 형으로 주어지기 때문에 -로 계산 후 +- 증감을 계산하면 된다.
문제풀이
아래 문구를 하나 하나 해석하면서 풀이 방식이 논리적인지 검토하는 식으로 문제 풀이를 해보려고 한다.
- int total_usage = 0 ; // 총사용량을 계산하기 위한 변수
- for(int i = 0; i < change.size(); i++){ : 입력받은 달의 개수만큼 돌기 위한 구문 ※개인적으로 i++이 불편했다.
- usage = total_usage * change [i] / 100; 이번달 사용량을 계산하기 위해 존재하는 구문으로 해석된다. 하지만 total_usage를 계속 사용한다면 usage는 이전달 대비가 아니라 총 사용량 대비가 되기 때문에 해당 구문을 수정해야 한다는 것을 알 수 있다.
- total_usage += usage ; // 총사용량을 구하기 위해 이번달에 사용한 물의 양을 더하는 구문이다.
- if(total_usage > storage) { 이때가지 사용한 물의 양이 저수지에 존재하는 물의 양 보다 많은지 확인하는 구문이다.
- return i : 충분하지 않기 때문에 0이상을 반환하는 것으로 보인다. 해당 문제는 -1는 물이 충분하다는 의미고 그 이외의 숫자는 다 저수지 물의 양이 불충분하다는 것을 의미하기 때문이다.
- return -1 : 해당 구문까지 왔다면 물의 양이 충분하다는 것을 의미한다.
#include <string>
#include <vector>
using namespace std;
int solution(int storage, int usage, vector<int> change) {
int total_usage = 0;
for(int i=0; i<change.size(); i++){
usage = total_usage * change[i] / 100;
total_usage += usage;
if(total_usage > storage){
return i;
}
}
return -1;
}
수정이 필요한 구문은 위의 내용에서 해석하면서 캐치하였다.
수정 전 구문
- usage = total_usage * change[i] / 100;
수정 후 구문
- usage += usage * change[i] / 100; -> 해석을 하면 이전 달 대비 증감량이기 때문에 이와 같이 진행을 하였다. /100을 하는 이유는 10%라는 것은 0.1을 의미한다. 그래서 100으로 나누는 것이다.
#include <string>
#include <vector>
using namespace std;
int solution(int storage, int usage, vector<int> change) {
int total_usage = 0;
for(int i=0; i<change.size(); i++){
usage += usage * change[i] / 100;
total_usage += usage;
if(total_usage > storage){
return i;
}
}
return -1;
}
결과
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/340202
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - [PCCE 기출문제] 8번 / 버스 C++ (0) | 2024.11.16 |
---|---|
프로그래머스 - [PCCE 기출문제] 7번 / 버스 C++ (0) | 2024.11.15 |
프로그래머스 - [PCCE 기출문제] 5번 / 심폐소생 C++ (2) | 2024.11.14 |
프로그래머스 - [PCCE 기출문제] 4번 / 병과분류 C++ (3) | 2024.10.27 |
프로그래머스 - [PCCE 기출문제] 3번 / 수 나누기 C++ (0) | 2024.10.27 |