본문 바로가기

알고리즘

파이썬) 컵홀더 - BOJ

 

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

 

2810번: 컵홀더

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

www.acmicpc.net

 

n = int(input())

s = input()


s = s.replace('LL', 'L')


new_s = '*'

for i in range(len(s)):
    new_s += s[i]
    new_s += '*'

s = new_s.replace('L', 'LL')

# 여기까지 별표를 끼워넣는 과정

arr = []

for i in s:
    if i == '*':
        arr.append(False)
    else:
        arr.append(i)
# arr라는 리스트에 컵홀더는 False로 나머지는 문자 그대로 넣음

cnt = 0

for i in range(len(arr)):
    if arr[i] == False or arr[i] == True:
        # 현재 인덱스가 컵홀더라면 패스
        continue
    else:
        # S나 L의 좌우를 확인해 컵홀더가 있고, 컵홀더가 사용중이 아니라면(False)
        if arr[i - 1] == False:
            cnt += 1
            arr[i-1] = True
        elif arr[i+1] == False:
            arr[i+1] = True
            cnt += 1

print(cnt)

 

그리디 문제지만 약간 구현문제 같았다..

'알고리즘' 카테고리의 다른 글

파이썬)사과 담기 게임 - BOJ  (0) 2023.11.08
파이썬) 폴리오미노 -BOJ  (0) 2023.11.07
파이썬) 게임을 만든 동준이 - BOJ  (0) 2023.11.06
파이썬) 0 만들기 - BOJ  (0) 2023.11.06
파이썬) 카드게임 - BOJ  (0) 2023.11.06