프로그래머스 코딩 테스트 7. 버스
1. 문제 설명 - 빈칸 채우기

제한 사항

2. 입출력 예시

3. 코드 작성
#include <string>
#include <vector>
using namespace std;
int func1(int num){
if(0 > num){
return 0;
}
else{
return num;
}
}
int func2(int num){
if(num > 0){
return 0;
}
else{
return num;
}
}
int func3(vector<string> station){
int num = 0;
for(int i=0; i<station.size(); i++){
if(station[i] == "Off"){
num += 1;
}
}
return num;
}
int func4(vector<string> station){
int num = 0;
for(int i=0; i<station.size(); i++){
if(station[i] == "On"){
num += 1;
}
}
return num;
}
int solution(int seat, vector<vector<string>> passengers) {
int num_passenger = 0;
for(int i=0; i<passengers.size(); i++){
num_passenger += func4(passengers[i]);
num_passenger -= func3(passengers[i]);
}
int answer = func1(seat-num_passenger);
return answer;
}
- passengers의 “ON”과 “OFF”의 여부에 따라 승객을 추가 또는 제거하여, 남은 자리의 수를 파악해야 함
- 승객은 존재하면 무조건 자리에 앉아있으므로, 남은 자리의 수는 총 자리의 수 - 승객 수
- func1은 0보다 num이 크면 0을 반환하고 아니면 num을 반환, 즉 num ~ 0까지를 반환
- func4는 “ON”을 받으면 num에 +1을 하여 num을 반환하므로 승객이 탔을 때의 수를 반환
- func3는 “OFF”를 받으면 num에 +1을 하여 num을 반환하므로 승객이 내렸을 때의 수를 반환
- num_passengers가 추가될 때는 버스에 승객이 탈 경우이므로 num_passengers += func4(passengers[i])
- 2차원 배열로 이루어진 passengers이므로 승객이 정류장마다 타고 내렸을 때를 확인하기 위해서는 1차원 배열로 생성자를 넣어주어야 함 : passengers[i]
- num_passengers가 감소될 때는 버스에 승객이 내릴 경우이므로 num_passengers -= func3(passengers[i])
- 총 자리의 수 - 승객 수를 num으로 반환하여 정답으로 대입해야 하므로 int answer = func1(seat - num_passenger)
4. 테스트 결과

5. 채점

Share article