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 |