본문 바로가기
Algorithm Problem Solving/BaekJoon

[BaekJoon] 백준 14647 준오는 조류혐오야!! (Python / 파이썬)

by ʚ⇜❅🎕̈❄⇝ɞ 2021. 8. 26.
728x90
반응형

BaekJoon 백준 14647 준오는 조류 혐오야!! 문제는 빙고판에 모든 행과 열을 통틀어서 9가 가장 많이 쓰여 있는 행 또는 열을 단 하나만 부순다. 빙고판에 남아있는 9의 개수만큼 준오를 때리기로 했다. 몇 대를 맞아야 할지 구하는 문제이다. 난이도는 Bronze 1이다.

 

BaekJoon 14647 준오는 조류 혐오야!! 문제 정보

출처

- https://www.acmicpc.net/problem/14647

알고리즘 분류

- 구현

난이도

- 브론즈 1 / Bronze 1

 

준오는 조류 혐오야!! 문제 요약

  • 특히 비둘기를 싫어하는 준오는 짝꿍의 빙고판에 9가 들어간 숫자들이 엄청 많아서 비둘기가 떠올랐기 때문에 짝꿍의 빙고판을 부숴버렸다.
  • 준오의 폭동에는 특별한 룰이 있다. 바로 모든 행과 열을 통틀어서 9가 가장 많이 쓰여 있는 행 또는 열을 단 하나만 부수는 것이다!
  • 빙고판을 부수는 순간 준오와 선생님의 눈이 마주쳤고, 선생님은 빙고판에 남아있는 9의 개수만큼 준오를 때리기로 했다. 준오는 몇 대를 맞아야 할지 구하여 출력한다.
  • 직사각형 빙고판의 크기를 뜻하는 n(1 ≤ n ≤ 500)과 m(1 ≤ m ≤ 500)이 주어진다. 빙고판에는 10,000 이하의 음이 아닌 정수가 적힌다.

 

문제 풀이 과정

  1. 빙고판의 수를 행 별로 입력받으면서, 행 별로 9의 개수가 몇 개씩 있는 지도 함께 저장한다.
  2. 열 별로 9의 개수가 몇 개씩 있는지 저장한다.
  3. 9의 총개수에서 9가 제일 많은 행 또는 열에서의 9의 개수를 빼서 준오가 몇 대 맞아야 하는 지를 구하여 출력한다.

 

코드 및 설명
  • row9 Num [] - 행 별 9의 개수
  • column9 Num [] - 열 별 9의 개수
n, m = map(int, input().split())
bingo = []
row9Num, column9Num = [], []
for _ in range(n):
    tmp = list(map(str, input().split()))
    bingo.append(tmp)
    # 행 별 9의 개수 저장
    rowCnt9 = 0
    for t in tmp:
        rowCnt9 += t.count('9')
    row9Num.append(rowCnt9)

# 열 별 9의 개수 저장
for i in range(m):
    columnCnt9 = 0
    for j in range(n):
        columnCnt9 += bingo[j][i].count('9')
    column9Num.append(columnCnt9)

# 9의 총 개수 - 9가 제일 많은 행 또는 열의 9의 개수
print(sum(row9Num) - max(max(row9Num), max(column9Num)))

BaekJoon 백준 14647 준오는 조류 혐오야!! 문제를 파이썬 python으로 풀어보았다. 난이도는 Bronze 브론즈 1이다. 

728x90
반응형

댓글