꿈꾸는 개발자의 devLog
[BaekJoon] "그리디" - 백준 20365번 문제 : 블로그2 본문
반응형
[문제 설명]
https://www.acmicpc.net/problem/20365
20365번: 블로그2
neighbor 블로그를 운영하는 일우는 매일 아침 풀고 싶은 문제를 미리 정해놓고 글을 올린다. 그리고 매일 밤 각각의 문제에 대하여, 해결한 경우 파란색, 해결하지 못한 경우 빨간색으로 칠한
www.acmicpc.net
일우는 매일 아침 풀고 싶은 문제를 미리 정해놓고 글을 올림
매일 밤 각각의 문제에 대하여, 해결한 경우 파란색, 해결하지 못한 경우 빨간색으로 칠함
각 문제를 칠할 때, 아래와 같은 과정을 한 번의 작업으로 수행
1. 연속된 임의의 문제 선택
2. 선택된 문제들을 전부 원하는 같은색으로 칠함
1~7번 문제를 파란색, 3,5,8번을 빨간색으로 순서대로 칠한다면 작업 횟수는 4번으로 가장 적음
일우를 도와 각 문제를 주어진 색으로 칠할 때 필요한 최소한의 작업 횟수 구하는 프로그램 작성
입력 예시 :
8
BBRBRBBR
출력 예시 : 4
[해결 로직]
- B,R을 키로 하는 딕셔너리 생성
- 입력의 첫번째 문자를 처음 발견하는 문자로 지정
- 그럼 B로 시작한다면 R을 만났을때 R의 딕셔너리 값에 1을 더해줌
- 그런 다음 만난 문자를 R로 변경해주고, B를 만나면 B 값에 1을 더해줌.
- 즉, 만난 문자를 변경하고 그 문자를 기준으로 다른 문자를 만난다면 딕셔너리 값 1 더해줌
- 그러고나서, 마지막에 +1 해주면 됨
[Solution 코드]
n = int(input())
ary = list(map(str, input()))
arydict = {'B':0, 'R':0}
arydict[ary[0]] += 1
cur_s = ary[0]
for i in range(1, len(ary)): ## 다른문자 발견할때만 더하기 1해주기
if ary[i] != cur_s:
arydict[ary[i]] += 1
cur_s = ary[i]
#print(arydict)
minum = min(arydict['B'], arydict['R'])
print(minum+1)
반응형
'Algorithm > BaekJoon' 카테고리의 다른 글
[BaekJoon] "최단거리" - 백준 18352번 문제 : 특정 거리의 도시 찾기 (0) | 2024.01.17 |
---|---|
[BaekJoon] "완전탐색" - 백준 18511번 문제 : 큰 수 구성하기 (2) | 2024.01.17 |
[BaekJoon] "그리디" - 백준 1541번 문제 : 잃어버린 괄호 (0) | 2024.01.17 |
[BaekJoon] "DP" - 백준 11055번 문제 : 가장 큰 증가하는 부분 수열 (0) | 2023.12.20 |
[BaekJoon] "완전탐색" - 백준 15721번 문제 : 번데기 (0) | 2023.12.20 |
Comments