본문 바로가기

백준

2810)컵홀더

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


좌석의 양 끝에 컵홀더가 있고 좌석 사이마다 컵홀더가 하나씩 놓여있다.


좌석은 S와 L 두 가지 종류가 있으며 L은 커플석으로 두 개씩 붙어있고 그 사이에는 컵홀더가 없다.


예시로 좌석이 SLLS로 주어진다면 컵홀더의 위치는 *S*LL*S* 이다.


조금 더 문제를 단순화해보자. 좌석이 SSS이면 컵홀더의 위치는 *S*S*S*이다.


좌석과 좌석 사이에 컵홀더가 놓이는 것보다 좌석의 우측에 컵홀더가 놓인다고 생각하자.


그렇게 하면 SSS에 놓이는 컵홀더의 위치를 S*S*S*로 볼 수 있고 컵홀더의 수는 좌석의 수와 같다.


그리고 좌석의 끝에 컵홀더 하나를 더 놓으면 되니 좌석의 수를 세고 1을 더해주면 된다.


커플석 LL은 2개가 연속으로 주어진다. L이 등장하면 이때부터 몇 번 연속했는지 센다.


2번 연속했을 때 컵홀더 수를 하나 늘려주면 된다.


좌석의 수가 컵홀더 수보다 많다면 컵홀더 수가 모자라니 컵홀더 수를 출력하고


컵홀더 수가 좌석의 수보다 많다면 컵홀더 수가 충분하니 좌석의 수를 출력한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<stdio.h>
 
int main() {
    int n;
    char seat[51];
    int cntCup = 0;
    int con = 0;
 
    scanf("%d",&n);
    scanf("%s",&seat);
 
    for (int i = 0; seat[i] != NULL;i++) {
        if (con % 2 == 0) cntCup++;
        if (seat[i] == 'L') con++;
    }
    cntCup += 1;
 
    if (cntCup <= n) printf("%d\n",cntCup);
    else printf("%d\n",n);
 
    return 0;
}
cs


'백준' 카테고리의 다른 글

1748)수 이어 쓰기 1  (0) 2019.02.07
5212)지구 온난화  (0) 2019.02.07
5612)터널의 입구와 출구  (0) 2019.02.06
3054)피터팬 프레임  (0) 2019.02.06
11047)동전 0  (0) 2019.02.04