[PCCE 기출문제] 7번 / 버스 자바(Java)

송선호·2024년 10월 27일



문제 설명

주어진 배열에서 승객의 승차(On)와 하차(Off) 정보를 처리하고, 남은 좌석 수를 계산하는 문제다. 배열의 각 요소에는 승차/하차 정보가 담겨 있고, 그에 맞게 승객 수를 계산해서 남은 좌석 수를 구해야 된다.



풀이

  1. num_passenger 변수: 현재 승객 수를 저장한다.
  2. func1, func2, func3, func4 함수:
  • func1: 음수 값이 나오면 0을 리턴하는 함수다.
  • func2: 양수 값이 나오면 0을 리턴하는 함수지만 이 문제에서는 사용하지 않는다.
  • func3: 배열에서 "Off"의 개수를 세는 함수로 하차한 승객 수를 반환한다.
  • func4: 배열에서 "On"의 개수를 세는 함수로 승차한 승객 수를 반환한다.

<완성된 코드>

class Solution {
public int solution(int seat, String[][] passengers) {
    int num_passenger = 0; // 현재 승객 수

    for (int i = 0; i < passengers.length; i++) {
        // 내리는 승객 처리
        num_passenger -= func1(func3(passengers[i]));
        // 타는 승객 처리
        num_passenger += func1(func4(passengers[i]));

        // 만약 현재 승객 수가 좌석 수를 초과하면 좌석 수로 제한
        if (num_passenger > seat) {
            num_passenger = seat;
        }
    }

    // 최종 남은 좌석 수 계산
    int answer = seat - num_passenger;
    return func1(answer); // 음수가 나오면 0으로 처리
}

// 음수는 0으로 바꾸는 함수
public int func1(int num) {
    if (num < 0) {
        return 0;
    } else {
        return num;
    }
}

// 양수는 0으로 바꾸는 함수 (여기서는 사용하지 않음)
public int func2(int num) {
    if (num > 0) {
        return 0;
    } else {
        return num;
    }
}

// "Off"의 개수를 세는 함수
public int func3(String[] station) {
    int num = 0;
    for (int i = 0; i < station.length; i++) {
        if (station[i].equals("Off")) {
            num += 1;
        }
    }
    return num;
}

// "On"의 개수를 세는 함수
public int func4(String[] station) {
    int num = 0;
    for (int i = 0; i < station.length; i++) {
        if (station[i].equals("On")) {
            num += 1;
        }
    }
    return num;
}
}

풀이 과정

  1. 승객 처리: 주어진 승차/하차 정보 배열을 순회하면서 승객 수를 계산한다.
  • 하차한 승객 수는 func3으로 계산해서 num_passenger에서 빼고,
  • 승차한 승객 수는 func4로 계산해서 num_passenger에 더한다.
  1. 좌석 수 제한: 만약 현재 승객 수가 총 좌석 수를 초과하면, num_passenger를 좌석 수로 제한한다.

  2. 남은 좌석 계산: num_passenger를 이용해 남은 좌석 수를 계산하고, 음수로 만들지 않기 위해 func1을 호출해서 음수일 경우 0으로 처리한다.

함수 선택

func1: 남은 좌석 수를 계산할 때 사용되는 함수로, 음수가 나오면 0을 반환한다.
func2: 양수 값이 나오면 0으로 바꾸는 함수지만, 이 문제에서는 사용하지 않는다.

최종 결과

남은 좌석 수를 계산하고 반환한다.

0개의 댓글