반응형
Recent Posts
Recent Comments
«   2025/07   »
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 29 30 31
Today
Total
관리 메뉴

꿈꾸는 개발자의 devLog

[BaekJoon] "그리디" - 백준 20365번 문제 : 블로그2 본문

Algorithm/BaekJoon

[BaekJoon] "그리디" - 백준 20365번 문제 : 블로그2

덩화 2024. 1. 17. 10:16
반응형

[문제 설명]

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)
반응형
Comments