D4
<문제는 문제일 뿐이야..과몰입하지말자!>
problem
SW Expert Academy 러시아 국기 같은 깃발
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
Solution
1. 흰색, 파란색, 빨간색의 범위를 반드시 나눠야하며, 이 중 변경할 곳의 최솟값을 찾는다.
2. 범위를 완전탐색을 통해 하나씩 수정할 곳을 확인하여 이 중 최솟값을 찾는다.
Code
def color(i,j,N):
# White 범위 = 0 ~ i
# Blue 범위 = i+1 ~ j
# Red 범위 = j+1 ~ N-1
white = blue = red = 0 # 각각의 개수(하나로 묶어도 됌)
# white
for k in range(i+1):
for l in range(M):
if flag[k][l] != 'W': # 흰색으로 바꿔야할 곳 카운팅
white += 1
for k in range(i+1, j+1):
for l in range(M):
if flag[k][l] != 'B': # 파란색으로 바꿔야할 곳 카운팅
blue += 1
for k in range(j+1, N):
for l in range(M):
if flag[k][l] != 'R': # 빨간색으로 바꿔야할 곳 카운팅
red += 1
return white + blue + red # 카운팅 총합
for test_case in range(1, int(input())+1):
N, M = map(int, input().split())
flag = [input() for _ in range(N)]
min_val = N*M
for i in range(N-2): # 완전탐색(범위를 탐색)
for j in range(i+1, N-1):
res = color(i,j,N) # 개수 확인
if min_val > res: # 최소 값 확인
min_val = res
print(f'#{test_case} {min_val}')
<부족한 점은 댓글로 남겨주시면 저에게 도움이 됩니다!>
<그림 출처: SWEA 러시아 국기 같은 깃발>
반응형
'Algorithm > SW Expert Academy Review' 카테고리의 다른 글
2607. 비슷한 단어 (0) | 2024.01.20 |
---|---|
13994. 새로운 버스 노선 (0) | 2023.03.06 |
1210. [S/W 문제해결 기본] 2일차 - Ladder1 (0) | 2023.03.06 |
1954. 달팽이 숫자 (0) | 2023.03.06 |
1961. 숫자 배열 회전 (0) | 2023.03.05 |