백준 문제풀이 20365 블로그2

boj 20365 : 블로그2

문제 주소: https://www.acmicpc.net/problem/20365

난이도: silver 2

1.문제설명

  • 두가지 색을 칠해야한다.
  • 원한다면 이어서 한번에 칠할 수 있다.
  • 칠해야 할 색의 리스트가 있을때 ex) RBBRRRBR, 이때 R: red, B: blue
  • 최소한의 작업횟수는?

2.문제해결 아이디어.

  • 처음에는 단순하게 빨간, 파란중에 많이나오는 색으로 한번에 밀어버린다음, 적은색만 칠하려함 -> 실패
  • count를 빨간색, 파란색 두가지에대해 따로 진행

3.문제접근법

#딕셔너리를 이용해서 작업횟수 기록
#B는 B로 몇번 바꿔 칠해야하는지, R은 R로 몇번 바꿔 칠해야하는지 기록
color_dict = {'B' : 0, 'R' : 0}
#첫번째 문자 count
color_dict[tasks[0]] += 1
#칠해야하는 색이 바뀌면 새로운 색에 +1 해줌
for i in range(1, N):
    if tasks[i] != tasks[i-1]:
        color_dict[tasks[i]] += 1

4.특별히 참고할 사항

  • 두개의 케이스를 카운팅해야했다.

5.코드구현

import sys
input = sys.stdin.readline

N = int(input())
tasks = input().rstrip()
color_dict = {'B' : 0, 'R' : 0}
color_dict[tasks[0]] += 1
for i in range(1, N):
    if tasks[i] != tasks[i-1]:
        color_dict[tasks[i]] += 1
print(min(color_dict['R'], color_dict['B']) + 1)

좋은 웹페이지 즐겨찾기