데이터사이언스 기록기📚

[백준/Python] 17615번(그리디)_볼 모으기 본문

Coding Test/백준(Python)

[백준/Python] 17615번(그리디)_볼 모으기

syunze 2023. 5. 9. 01:27

📌문제 유형

그리디 (실버1)

 

📌문제

 

17615번: 볼 모으기

첫 번째 줄에는 볼의 총 개수 N이 주어진다. (1 ≤ N ≤ 500,000) 다음 줄에는 볼의 색깔을 나타내는 문자 R(빨간색 볼) 또는 B(파란색 볼)가 공백 없이 주어진다. 문자열에는 R 또는 B 중 한 종류만 주

www.acmicpc.net

 

📌나의 문제풀이

- 레드와 블루가 오른쪽, 왼쪽으로 모으는 경우를 생각해서 문제 수행

- 끝쪽 뭉텅이를 제외한 개수만 옮기므로 해당 개수만 카운트

n = int(input())
balls = list(map(str,input()))
balls_r = balls.copy()
balls_b = balls.copy()
balls_r_r = balls.copy()
balls_b_r = balls.copy()
r,b,r_r,b_r = 0,0,0,0

# 정방향
while True:
    if balls_r == []:
        break
    if balls_r[-1] == 'R':
        balls_r.pop()
    elif balls_r[-1] == 'B':
        break
r = balls_r.count('R')

while True:
    if balls_b == []:
        break
    if balls_b[-1] == 'B':
        balls_b.pop()
    elif balls_b[-1] == 'R':
        break
b = balls_b.count('B')

# reverse
balls_r_r.reverse()
balls_b_r.reverse()

while True:
    if balls_r_r == []:
        break
    if balls_r_r[-1] == 'R':
        balls_r_r.pop()
    elif balls_r_r[-1] == 'B':
        break
r_r = balls_r_r.count('R')

while True:
    if balls_b_r == []:
        break
    if balls_b_r[-1] == 'B':
        balls_b_r.pop()
    elif balls_b_r[-1] == 'R':
        break
b_r = balls_b_r.count('B')

print(min(r,b,r_r,b_r))

 

📌 다른사람의 문제풀이

 

[baekjoon] 백준 17615번(파이썬): 볼 모으기

문제 17615번: 볼 모으기 첫 번째 줄에는 볼의 총 개수 N이 주어진다. (1 ≤ N ≤ 500,000) 다음 줄에는 볼의 색깔을 나타내는 문자 R(빨간색 볼) 또는 B(파란색 볼)가 공백 없이 주어진다. 문자열에는 R

fre2-dom.tistory.com

import sys

N = int(sys.stdin.readline().strip())
balls = str(sys.stdin.readline().strip())
cnt = []

# 우측으로 레드 모으기
rexplore = balls.rstrip('R')
cnt.append(rexplore.count('R'))

# 우측으로 블루 모으기
rexplore = balls.rstrip('B')
cnt.append(rexplore.count('B'))

# 좌측으로 레드 모으기
lexplore = balls.lstrip('R')
cnt.append(lexplore.count('R'))

# 좌측으로 블루 모으기
lexplore = balls.lstrip('B')
cnt.append(lexplore.count('B'))

print(min(cnt))

 

📌 리뷰 

- list에서 하나씩 제거하는 것 대신 rstrip, lstrip으로 한 번에 제거할 수 있다!!!

- 아이디어는 맞았음

728x90
Comments