양 끝의 사람은 무조건 바깥쪽 홀더를 사용해야 한다.
컵홀더에 컵을 꽂을 수 있는 최대 사람의 수
존재하는 컵홀더의 개수를 구한 다음에, 사람수와의 min값을 반환하면 된다
코너 테스트 케이스 :
5, SLLSS
1, S
if __name__=='__main__':
N = int(input())
seats = str(input())
Ls = seats.split('S') ## 커플석들의 정보
Ss = seats.split('LL') ## 싱글석들의 정보
L_holders = [len(n)//2-1 for n in Ls if n!='']
S_holders = [len(n)-1 for n in Ss if n!='']
ans = len(L_holders)+len(S_holders)+sum(L_holders)+sum(S_holders)+1
print(min(N,ans))
_____________________________모범 답안______________________________
힌트 : 맨 왼쪽을 제외하곤 자리 묶음당 하나씩 컵홀더가 생긴다. --> seats.replace('LL','S')를 사용하면 더 간단하게 구할 수 있다.
출처 : yjm6560님의 코드
'공부하는 것들 > 알고리즘' 카테고리의 다른 글
백준 2828 : 사과 담기 게임(그리디) ** (0) | 2021.02.25 |
---|---|
백준 5585 : 거스름돈 (그리디) (0) | 2021.02.24 |
백준 1434 : 책 정리(그리디)* (0) | 2021.02.24 |
백준 11034 : 캥거루 세마리2(그리디) ** (0) | 2021.02.24 |
백준 2720 : 세탁소 사장 동혁 (그리디) ** (0) | 2021.02.24 |