# Coding/# 백준
[백준 / 1034] 램프 - Python
강현들
2021. 12. 10. 14:14
728x90
반응형
https://www.acmicpc.net/problem/1034
1034번: 램프
첫째 줄에 N과 M이 주어진다. N은 행의 개수이고, M은 열의 개수이다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 램프의 상태가 주어진다. 1이 켜져있는 상태이고, 0이 꺼져
www.acmicpc.net
<풀이>
램프는 열 단위로 불이 켜지고, 행에 있는 불의 개수를 세는 거다.
열 단위로 불이 켜지므로 A행과 B행의 램프의 순서가 같다면 둘은 같이 켜질 것이고, 둘이 다르면 다르게 켜질 것이다.
따라서 같은 램프 구조를 가지고 있는 행의 개수를 세면 되는 문제였다.
(정말로 간단하게 생각해도 되는 문제였다. 처음에는 재귀함수로 풀었는데 계속 시간초과가 나왔다.)
하지만, 짝수인 경우 껐다켰다 하면 되니까 키면 되지만 홀수인 경우 순서가 바뀌게 된다.
즉, 행의 불을 다 켰을 때 남은 횟수가 짝수면 그 상태를 유지할 수 있지만 남은 횟수가 홀수면 그 상태를 유지할 수 없다.
따라서 같은 패턴의 행의 개수를 조사하고, 해당 행의 불을 켰을 때 남은 횟수가 짝수인 행 중 제일 같은 패턴을 많이 가지고 있는 수가 정답이다.
<전체 코드>
graph = {}
row, col = map(int, input().split())
for _ in range(row):
temp = input()
if temp not in graph:
graph[temp] = 1
else:
graph[temp] += 1
count = int(input())
answer = []
for i in graph:
zeroCount = i.count('0')
if zeroCount > count:
answer.append(0)
else:
tempcount = count - zeroCount
if tempcount % 2 == 1:
answer.append(0)
else:
answer.append(graph[i])
print(max(answer))
728x90
반응형