Algorithm/백준

[백준 알고리즘] 2810번: 컵홀더 (Python)

에릭 Kim 2023. 6. 8. 15:18
반응형

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

 

2810번: 컵홀더

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

www.acmicpc.net

 

소스코드

 

 

풀이

★ 스택을 사용하여 문제를 풀었습니다. 

 

★ a 리스트의 원소들로 반복문을 돌면서 'LL', 즉 커플석을 찾아줍니다. 만약 커플석을 찾았을 경우에 커플석을 stack에서 제거한 뒤, 컵홀더를 놓을 수 있는 개수인 1을 cnt에 플러스해줍니다. 

 

★ 위 과정을 거쳤을 때, stack 안에는 일반좌석만 남아있습니다. 양 끝의 일반좌석 옆에는 컵홀더를 하나씩 놓을 수 있고, 일반 좌석들 사이에도 하나의 컵홀더를 놓을 수 있기 때문에 stack이 비어있지 않는동안 일반석을 pop하면서 cnt + 1을 해줍니다. 

 

★ 위의 두 과정을 끝내면 컵홀더의 개수인 cnt를 알 수 있습니다. 만약 cnt가 사람 수보다 많거나 같으면 모든 사람이 컵홀더를 사용할 수 있고, 아닐 경우 컵홀더의 갯수만큼만 사용할 수 있습니다 ! 

반응형