프로그래머스 - [PCCE 기출문제] 5번 / 심폐소생 C++
오늘은 이전 포스팅 2024.10.27 - [알고리즘/프로그래머스] - 프로그래머스 - [PCCE 기출문제] 4번 / 병과분류 C++
에 이어 5번 문제를 풀어보았다. 개인적으로 헷갈릴만한 요지도 없는 문제인 것 같고, 초보자들에게는 Vector라는 자료구조를 짧지만 잠깐 공부할 수 있는 문제가 아닌가 싶은 생각이 든다.
알고리즘 난이도 및 시간 ( ※ 개인적인 의견 )
- 난이도 : Level 0 ( ※ Min : 0, Max : 10 )
- 풀이 시간 : 1분
- 제출 횟수 : 1번
- 풀이 결과 : Pass
문제 설명
문제를 읽어보면 우리의 상식(?)이라고 할 수 있는 심폐소생술 지식도 알 수 있는 문제다. 그리고 전달받는 문자열을 심폐소생술 번호에 맞게 매칭하는 문제다. 그래서 단순하게 빈칸 넣기의 문제가 아니라고 생각해도 단순하게 문자열 비교 문제이구나라고 생각 할 수 있다.
제한 사항은 한 번씩 포함되어 있다라는 내용이다. 만약 실무에서 구현을 한다면 동일한 번호가 있는지 확인하는 로직을 넣어 실수를 줄일 수 있을 것 같다.
문제풀이
문제를 보면 아래에 3개의 빈칸이 존재한다. 두 개의 빈칸은 for문이 얼마만큼 돌아야 하는지에 관한 조건이며, 마지막 빈칸은 정답을 채울 때 값을 어떻게 넣을 것인지? 에 관한 질문이다.
우리가 아래에서 보면 cpr[i] == basic_order [j]라는 문구를 통해 정답을 유추할 수 있다. i는 cpr 개수만큼 도는 조건이고, j는 basic_order 개수만큼 도는 것이다.
Vector에서는 개수를 알 수 있는 방법 중 size라는 function이 있다. 사용 방법은 변수명.size()라는 함수를 사용하면 size_t 변수 type의 값을 반환한다. ※ 여기서 type이 달라 신경이 쓰인다면 static_cast<int>(변수명.size())라고 사용해도 된다.
마지막 빈칸은 answer에 값을 적재해야 하는데 여기서 주의할 점은 basic_order와 동일한 경우 j는 0부터 시작하기 때문에 +1을 하여 적재해야 한다.
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<string> cpr) {
vector<int> answer = {0, 0, 0, 0, 0};
vector<string> basic_order = {"check", "call", "pressure", "respiration", "repeat"};
for(int i=0; i< 빈칸; i++){
for(int j=0; j< 빈칸; j++){
if(cpr[i] == basic_order[j]){
answer[i] = 빈칸;
break;
}
}
}
return answer;
}
아마 해당 문제에 정답 Case는 여러개가 존재할 수 없다. 다만 개발자의 성격에 따라 static_cast를 하는지에 관한 습관을 볼 수 있을지 않을까 싶다.
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<string> cpr) {
vector<int> answer = {0, 0, 0, 0, 0};
vector<string> basic_order = {"check", "call", "pressure", "respiration", "repeat"};
for(int i=0; i<static_cast<int>(cpr.size()); i++){
for(int j=0; j<static_cast<int>(basic_order.size()); j++){
if(cpr[i] == basic_order[j]){
answer[i] = j+1;
break;
}
}
}
return answer;
}
결과
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/340203
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr