[Programmers_CT] 7. 버스

문정준's avatar
Feb 05, 2025
[Programmers_CT] 7. 버스
💡
프로그래머스 코딩 테스트 7. 버스
 

1. 문제 설명 - 빈칸 채우기

notion image

제한 사항

notion image

2. 입출력 예시

notion image

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. 테스트 결과

notion image

5. 채점

notion image
Share article

sxias