[백준] 2810번: 컵홀더 (Java)

seri·2024년 7월 3일
0

코딩테스트 챌린지

목록 보기
10/62

문제: https://www.acmicpc.net/problem/2810

📌 문제 탐색하기

입력 : 첫째 줄-좌석의 수 N (1 ≤ N ≤ 50)
둘째 줄-좌석의 정보 (공백없이)
출력 : 컵홀더에 컵을 놓을 수 있는 최대 사람의 수

가능한 시간복잡도

O(N)

알고리즘 선택

그리디

📌 코드 설계하기

  1. 첫째줄에서 좌석의 수 N을 Input으로 받는다.
  2. 둘째줄에서 좌석의 정보를 공백없이 Input으로 받는다.
  3. 좌석의 정보를 순회하면서 'S'면 result에 1을 더하고, 'L'이면 result에 1을 더하고 다음 좌석으로 건너뛴다.
  4. result가 좌석의 수보다 크면 result에 N을 대입해 결과를 출력한다.

📌 시도 회차 수정 사항 (Optional)

💡 시도별 수정 사항은 어떻게 작성하나요?
- 무문별하게 “맞았습니다”가 나올때 까지 수정하는 형태의 문제 풀이를 반복하면 , 내가 어떤 실수를 해서 해당 문제를 틀렸는지 모르게 됩니다.
- 틀렸습니다를 받았다면 왜 틀렸는지 고민해보고 , 어떻게 수정할 수 있는지 고민하는 과정을 작성해주시면 됩니다.
- 위에 내가 세울 설계에서 어떤 부분이 틀렸는지도 함께 점검해보세요
- 한번에 맞출수도 있기 때문에 이 칸은 Optional입니다.

1회차

공백없이 좌석의 정보를 입력받기때문에 String[]이 아닌 String 사용

2회차

📌 정답 코드

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        String seats = sc.next();
        
        int result = 1; //처음 컵홀더 하나는 무조건 사용 가능
        
        
        for (int i = 0; i < N; i++) {
            if (seats.charAt(i) == 'S') {
                result += 1;
            } else if (seats.charAt(i) == 'L') {
                result += 1;
                i++; //커플 좌석이므로 다음 좌석 건너뜀
            }
        }
        
        
        if (result > N) result = N;
        System.out.print(result);
    }
}
profile
꾸준히 정진하며 나아가기

0개의 댓글