Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- Brigthics
- 캐글
- 혼공
- 브라이틱스 서포터즈
- 삼성 SDS
- 삼성SDS Brightics
- 혼공학습단
- 직원 이직률
- 데이터분석
- 영상제작기
- Brightics
- 노코드AI
- 직원 이직여부
- 추천시스템
- 팀 분석
- Brigthics를 이용한 분석
- Brigthics Studio
- 포스코 청년
- 삼성SDS
- 데이터 분석
- 혼공머신
- 포스코 아카데미
- 삼성 SDS Brigthics
- 삼성SDS Brigthics
- 브라이틱스
- Brightics Studio
- 혼공머신러닝딥러닝
- Brightics를 이용한 분석
- 개인 의료비 예측
- 모델링
Archives
- Today
- Total
데이터사이언스 기록기📚
[백준/Python] 17615번(그리디)_볼 모으기 본문
📌문제 유형
그리디 (실버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
'Coding Test > 백준(Python)' 카테고리의 다른 글
[백준/Python] 10026번(그래프, BFS, DFS)_적록색약 (0) | 2023.05.11 |
---|---|
[백준/Python] 1931번(그리디, 정렬)_회의실 배정 (0) | 2023.05.11 |
[백준/Python] 7562번(그래프, BFS)_나이트의 이동 (0) | 2023.05.08 |
[백준/Python] 2667번(그래프, DFS, BFS)_단지 번호 붙이기 (0) | 2023.05.07 |
[백준/Python] 1138번(구현)_한 줄로 서기 (0) | 2023.05.06 |
Comments