Kim Seon Deok

[백준] 1034 램프 본문

python/Algorithm

[백준] 1034 램프

seondeok 2022. 2. 6. 10:57

https://www.acmicpc.net/problem/1034

 

1034번: 램프

첫째 줄에 N과 M이 주어진다. N은 행의 개수이고, M은 열의 개수이다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 램프의 상태가 주어진다. 1이 켜져있는 상태이고, 0이 꺼져

www.acmicpc.net

 

한 행에 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