Notice
Recent Posts
Recent Comments
Link
CodeClover
[JAVA] 백준_2810 컵홀더 본문
https://www.acmicpc.net/problem/2810
📌 문제 탐색하기
혼자 앉는 일반좌석 S
두 좌석이 하나의 팔걸이는 공유하는 LL 커플석
커플석 LL의 경우 두 사람이 하나의 컵홀더를 공유하기 때문에 L 두개당 컵홀더 하나만 추가된다.
좌석의 수, 정보의 입력값을 보고 해당 좌석들에서 이용 가능한 총 컵홀더의 개수를 출력하는 문제이다.
📌 가능한 시간복잡도
입력받은 좌석의 개수 N의 문자열 길이를 한번 순회하면서 일반좌석과 커플좌석을 구분하고 커프좌석이 나타나면 인덱스를 한번 더 넘기는 방식으로 진행한다. 각각 문자를 한번씩 확인하기 때문에 O(N) 이라고 생각함.
따라서 가능한 시간복잡도는 O(N)입니다.
📌 코드 설계하기
일반좌석은 좌우에 컵홀더가 하나씩 있고, 커플석은 두 좌석에 하나의 컵홀더가 있음.
따라서 컵 홀더의 개수를 구할때, 일반좌석의 숫자만큼 컵 홀더 +1 , 커플좌석은 연속된 두개가 하나의 세트이니까 한 쌍의 커플 좌석당 컵홀더 +1이다. 따라서 컵홀더의 개수 = 일반좌석의 개수 + 커플석(2인)의 수 +1 이다.
좌석의 수에서 커플석을 빼면 컵홀더 하나가 모자라기 때문에 +1 을 반드시 처리해야 정확한 총 컵홀더의 수가 출력됨
=> 이 부분에서 틀림.
📌 정답 코드
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
String seats = br.readLine();
int coupleCount = 0;
for (int i = 0; i < seats.length() - 1; i++) {
if (seats.charAt(i) == 'L' && seats.charAt(i + 1) == 'L') {
coupleCount++;
i++;
}
}
int cupHolders = N - coupleCount + 1;
System.out.println(Math.min(N, cupHolders));
}
}
'코딩테스트' 카테고리의 다른 글
[Python] 백준_26168 배열 전체 탐색하기 (0) | 2025.04.23 |
---|---|
[JAVA] 백준_2828 사과 담기 게임 (0) | 2025.04.22 |
[JAVA] 백준_14916 거스름돈 (0) | 2025.04.20 |
[JAVA] 백준 2606_바이러스 (0) | 2025.04.17 |
[JAVA] 백준 1260_DFS와 BFS (0) | 2025.04.16 |