[BOJ] 2810번: 컵홀더

rany·2021년 2월 17일
0

Baekjoon Online Judge

목록 보기
19/26

✔️ 문제

십년이면 강산이 변한다.

강산이네 동네에 드디어 극장이 생겼고, 강산이는 극장에 놀러갔다. 매점에서 콜라를 산 뒤, 자리에 앉은 강산이는 큰 혼란에 빠졌다. 양쪽 컵홀더를 이미 옆 사람들이 차지했기 때문에 콜라를 꽂을 컵 홀더가 없었기 때문이다. 영화를 보는 내내 콜라를 손에 들고 있던 강산이는 극장에 다시 왔을 때는 꼭 콜라를 컵 홀더에 놓겠다는 다짐을 한 후 집에 돌아갔다.

극장의 한 줄에는 자리가 N개가 있다. 서로 인접한 좌석 사이에는 컵홀더가 하나씩 있고, 양 끝 좌석에는 컵홀더가 하나씩 더 있다. 또, 이 극장에는 커플석이 있다. 커플석 사이에는 컵홀더가 없다.

극장의 한 줄의 정보가 주어진다. 이때, 이 줄에 사람들이 모두 앉았을 때, 컵홀더에 컵을 꽂을 수 있는 최대 사람의 수를 구하는 프로그램을 작성하시오. 모든 사람은 컵을 한 개만 들고 있고, 자신의 좌석의 양 옆에 있는 컵홀더에만 컵을 꽂을 수 있다.

S는 일반 좌석, L은 커플석을 의미하며, L은 항상 두개씩 쌍으로 주어진다.

어떤 좌석의 배치가 SLLLLSSLL일때, 컵홀더를 *로 표시하면 아래와 같다.

*S*LL*LL*S*S*LL*
위의 예에서 적어도 두 명은 컵홀더를 사용할 수 없다.


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

[출력]
컵을 컵홀더에 놓을 수 있는 최대 사람의 수를 출력한다.

😎 소스 코드

N = int(input())
seat = input()

answer = 0
couple = 0

for ppl in seat:
	# L의 개수 확인
	if ppl == 'L':
		couple += 1

# L 자리만 컵홀더 하나 빼주면 된다
answer = N+1-int(couple/2)
if answer > N:
	# 컵홀더 사용 자리보다 사람이 적음
	answer = N
print(answer)

✊ 문제를 풀고 나서

문제를 보고 left, right 변수를 이용해서 풀면 될 것 같았다. 근데 조금 생각해보니 모든 자리 양옆에 컵홀더를 이용할 수 있으며, 다만 커플석만 중간을 비워야 한다는 것을 발견했다. 그래서 모든 자리에 컵홀더를 배치했다고 가정하고 L의 개수를 세서 절반으로 나누는 방향으로 생각했다.

근데 내가 생각하지도 못한 부분은..!! 컵홀더 사용 가능 개수가 사람 수보다 많을 경우였다. 이건 예외 처리 코드로 작성했다.

profile
개발개발

0개의 댓글