


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



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;
}
}
좌석 수 제한: 만약 현재 승객 수가 총 좌석 수를 초과하면, num_passenger를 좌석 수로 제한한다.
남은 좌석 계산: num_passenger를 이용해 남은 좌석 수를 계산하고, 음수로 만들지 않기 위해 func1을 호출해서 음수일 경우 0으로 처리한다.
func1: 남은 좌석 수를 계산할 때 사용되는 함수로, 음수가 나오면 0을 반환한다.
func2: 양수 값이 나오면 0으로 바꾸는 함수지만, 이 문제에서는 사용하지 않는다.
남은 좌석 수를 계산하고 반환한다.