알고리즘/백준

[백준/c++] 2810번: 컵홀더

녕이 2022. 7. 8. 20:59
728x90

 

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

 

2810번: 컵홀더

첫째 줄에 좌석의 수 N이 주어진다. (1 ≤ N ≤ 50) 둘째 줄에는 좌석의 정보가 주어진다.

www.acmicpc.net

 

극 중 한 줄에 자리가 N개

서로 인접한 좌석 사이에는 컵 홀가 하나씩 있고, 양 끝 좌석에 컵홀더가 하나씩 더 있다.

커플석이 있는데, 이 사이에는 컵홀더가 없다.

극장의 한 줄의 정보가 주어진다. 이 줄에 사람들이 모두 앉았을 때, 컵홀더에 컵을 꽂을 수 있는 최대 사람의 수 구하기

모든 사람은 컵을 한 개만 들고 있고, 자신의 좌석의 양 옆에 있는 컵홀더에만 컵을 꽂을 수 있다.

S는 일반 좌석, L은 커플석, L은 항상 두 개씩 쌍으로 주어진다.

컵홀더에 놓을 수 있는 최대 사람의 수를 출력하기

 

우선 좌석 문자열이 주어지면 L 좌석이 없다고 생각하고 컵홀더의 개수를 생각해보면 N+1 

L의 개수를 카운팅해서 L의 개수당 0.5로 해서 카운팅 해준다. 커플석이니 LL 쌍으로 나온다.

만약 L의 카운팅한 값이 0이라면 커플석이 없다는 것이므로 자리 개수를 출력해줘야 한다.

컵홀더가 n+1개 있지만 사용할 수 있는 사람의 수는 자리 개수이기 때문.

그리고 만약 L의 카운팅 값이 0이 아니라면 커플석이 있다는 것이므로 이 값을 빼줘야 한다. 

 

#include <iostream>
using namespace std;

int main(){
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    int n, ans;
    float cnt = 0;
    string s; //좌석 배치
    cin >> n >> s;
    
    ans = n + 1;
    for(int i=0; i<s.size(); i++){
        if(s[i] == 'L'){
            cnt += 0.5;
        }
    }
    if(cnt == 0) cout << n << '\n';
    else         cout << ans - cnt << '\n';
    return 0;
}

 

 

 

 

728x90