그리디 기본 연습용 마지막 문제이다.
예시로 그려보면서 판단한 것은 S와 L석의 개수를 각각 세어봐야 된다는 것이다.
사용할 수 있는 총 컵홀더의 갯수는 {맨 왼쪽의 컵홀더(1) + S석의 개수 + L석의 개수 / 2}이다.
그림을 몇 차례 그려보면 이해할 수 있을 것이다.
최대 인원을 구하라고 했으니 컵홀더 개수가 사람 수를 초과하는지도 꼭 확인해줄 필요가 있다.
아래는 내가 작성한 코드이다.
n = int(input())
seats = str(input())
count = 1 # 맨 왼쪽의 컵홀더를 미리 세어준다.
s = 0 # 좌석 갯수 세는 용도의 변수
l = 0
# 각 좌석 갯수 세기
for i in range(len(seats)):
if seats[i] == "S":
s += 1
else:
l += 1
count += s + l // 2 # S좌석 갯수 + l좌석의 컵홀더 갯수
if count <= n:
print(count)
else: # 사람 수를 구하라고 했기 때문에 최대 인원은 초과할 수 없다.
print(n)
'알고리즘 > 문제풀이' 카테고리의 다른 글
백준[2839] 설탕 배달 (파이썬) (0) | 2021.12.10 |
---|---|
백준[2864] 5와 6의 차이 (파이썬) (0) | 2021.12.10 |
백준[5585] 거스름돈 (파이썬) (0) | 2021.12.10 |
백준[10162] 전자레인지 (파이썬) (0) | 2021.12.09 |