[백준 2810] 컵홀더 (C#, C++) - soo:bak
작성일 :
문제 링크
설명
일반석(S)은 좌석 양옆에 컵홀더가 하나씩 있지만, 커플석(L)은 두 좌석 사이 컵홀더가 없어서 한 쌍이 끝 양쪽 홀더를 공유합니다. 모든 관객이 컵을 한 개씩 둘 때, 컵홀더를 쓸 수 있는 최대 인원을 구합니다.
접근법
모든 좌석이 일반석이면 N명에 대해 N+1개의 컵홀더가 있어 모두 사용할 수 있습니다. 하지만 커플석 한 쌍은 두 사람 사이에 컵홀더가 없으므로, 커플석 쌍 하나당 컵홀더가 하나씩 줄어듭니다.
L의 개수를 세어 2로 나누면 커플석 쌍의 수가 됩니다. 컵홀더 수는 N + 1에서 커플석 쌍 수를 뺀 값이고, 컵홀더를 사용할 수 있는 사람 수는 이 값과 N 중 작은 값입니다.
Code
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;
class Program {
static void Main() {
var n = int.Parse(Console.ReadLine()!);
var seats = Console.ReadLine()!;
var lCount = 0;
foreach (var ch in seats)
if (ch == 'L') lCount++;
var couples = lCount / 2;
var holders = n - couples + 1;
var ans = Math.Min(n, holders);
Console.WriteLine(ans);
}
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n; cin >> n;
string s; cin >> s;
int lCount = 0;
for (char c : s)
if (c == 'L') lCount++;
int couples = lCount / 2;
int holders = n - couples + 1;
int ans = min(n, holders);
cout << ans << "\n";
return 0;
}