본문 바로가기
Problem Solving/BOJ

[BOJ][Python]2810 풀이

by NoiB 2023. 1. 23.
반응형

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

 

2810번: 컵홀더

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

www.acmicpc.net

n = int(input())
s = input()
ans = 1
cnt = 0
for i in range(n):
    if s[i] == 'L':
        cnt += 1
    if cnt % 2 == 0:
        ans += 1
        
print(min(ans, len(s)))

이번 내용은 어떻게 하면 L의 사이에는 컵홀더를 놓지 않을것인가를 고민하면 되는 문제였습니다. 저는 처음에는 좌석을 계속 비교하는 방식으로 코드를 작성했다가 L은 무조건 붙어서 나오기 때문에 L이 나온 횟수만 세어주면 비교하는 과정을 거치지 않아도 될 것 같아서 카운트가 홀수라면 다음 좌석은 무조건 L이기 때문에 ans를 증가시켜줄 필요가 없다고 생각해서 이렇게 코드를 작성해봤습니다. ans가 1부터 시작하는 이유는 맨 왼쪽 좌석에도 컵홀더를 놓아야 하기 때문입니다.

 

그리고 까먹으면 안되는 부분이 문제가 요구하는 것은 컵홀더의 갯수가 아니라 컵홀더에 컵을 놓을 수 있는 인원의 최대값을 물었기 때문에 아무리 컵홀더 자리가 있어도 사람 숫자가 컵홀더 갯수보다 작을 수 있기 때문에 마지막에 사람수와 컵홀더 수를 비교해서 작은 쪽을 출력하도록 코드를 작성했습니다.

반응형

'Problem Solving > BOJ' 카테고리의 다른 글

[BOJ][Python]24262 풀이  (0) 2023.02.27
[BOJ][Python]18096 풀이  (0) 2023.01.25
[BOJ][Python]18238 풀이  (0) 2023.01.17
[BOJ][Python]22864 풀이  (0) 2022.12.31