Kim Seon Deok
[백준] 1034 램프 본문
https://www.acmicpc.net/problem/1034
한 행에 0의 갯수를 p 라 하자.( p>=0, k >=0 )
1. k 가 홀수일 때
p가 홀수
p<=k일 때 possible_list에 행을 저장
p>k일 때 pass
p가 짝수
pass
2.k가 짝수일 때
p가 짝수
p<=k일 때 possible_list에 행을 저장
p>k일 때 pass
p가 홀수
pass
possible_list의 길이가 0인 경우, 0을 출력 >> 모든 행이 불가능한 경우
possible_list의 길이가 0보다 큰 경우
문제의 예제입력 5 에서, k = 6, p = 2일 때 possible_list에 있는 원소는 [0,0,1],[1,1,1][0,1,0]이다.
이 때 각 원소의 빈도수 중 가장 큰 빈도수를 가진 원소의 빈도수를 출력하면 된다.
각 원소를 join함수를 통해 문자열로 만들어주고 새로운 리스트 final_matrix에 저장
Collections모듈의 Counter함수를 통해 가장 빈도수가 큰 원소의 빈도수인 values를 출력
import sys
from collections import Counter
n, m = map(int,sys.stdin.readline().split()) # 행의 갯수, 열의 갯수
matrix = [] # 모든 행의 값을 저장
for i in range(n):
array = list(map(int,input())) # 한 행
matrix.append(array)
# 0 의 갯수를 세리는 함수
def count_zero(num): # 인자 : 리스트
cnt = 0
for i in range(len(num)):
if num[i] == 0:
cnt += 1
else:
cnt+= 0
return cnt
def fail():
return 0
k = int(input()) # 열마다 스위치 변경 횟수
possible_matrix = []
for i in range(n): # matrix의 행에서
if k % 2 == 1: # k가 홀수일 때
if count_zero(matrix[i]) % 2 == 1 :
if count_zero(matrix[i]) <= k: # 홀 홀
possible_matrix.append(matrix[i])
else:
pass
elif count_zero(matrix[i]) % 2 == 0:
pass
elif k % 2 == 0: # k가 짝수일 때
if count_zero(matrix[i]) % 2 == 0 :
if count_zero(matrix[i]) <= k:
possible_matrix.append(matrix[i])
else:
pass
elif count_zero(matrix[i]) % 2 ==1:
pass
if len(possible_matrix) == 0:
print(0)
else:
final_matrix = []
for i in range(len(possible_matrix)):
a = "".join([str(_) for _ in possible_matrix[i]])
# print(a)
final_matrix.append(a)a
# print(final_matrix)
count = Counter(final_matrix)
# print(count)
print(max(list(count.values())))
'python > Algorithm' 카테고리의 다른 글
[백준] 11279 최대 힙 (0) | 2022.02.06 |
---|---|
[백준] 1309 동물원 (0) | 2022.02.01 |
[백준] 17371 이사 (0) | 2022.02.01 |
[백준] 5397 키로거 (0) | 2022.01.31 |
[백준] 1759 암호만들기 (0) | 2022.01.29 |
Comments