반응형
백준 1455번: 뒤집기 II Python 파이썬 답안, 백준 코딩테스트 파이썬 풀이
문제
세준이는 동전 뒤집기를 하려고 한다. 세준이는 동전을 N×M개 가지고 있다. 동전은 세로로 N개, 가로로 M개 크기의 직사각형에 차곡차곡 놓여져 있다.
동전의 앞면을 0이라고 하고 뒷면을 1이라고 했을 때, 세준이는 모든 동전을 뒤집어서 앞면으로 만들려고 한다.
세준이가 (a,b)칸을 뒤집으려고 한다면, (i,j) (1 ≤ i ≤ a, 1 ≤ j ≤ b)의 조건을 만족하는 a×b개의 동전이 한번에 모두 뒤집힌다. (i는 위에서부터 위치의 위치이고, j는 왼쪽에서 부터의 위치이다.)
세준이가 뒤집어야하는 동전의 개수를 출력하시오. (a,b)칸을 선택해서 a×b개가 뒤집혔다면, 동전을 뒤집은 횟수는 a×b가 아니라 1이다.
입력
첫째 줄에 세로크기 N과 가로크기 M이 주어진다. N과 M은 100보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 M개의 동전 상태가 주어진다.
출력
첫째 줄에 세준이가 동전을 뒤집는 횟수를 출력한다.
답안
def flip_coins(N, M, coins):
flips = 0
# 바닥에서 위로, 오른쪽에서 왼쪽으로 순회
for i in range(N-1, -1, -1):
for j in range(M-1, -1, -1):
if coins[i][j] == '1':
flips += 1
# (i, j) 위치까지의 모든 동전을 뒤집음
for x in range(i + 1):
for y in range(j + 1):
coins[x][y] = '0' if coins[x][y] == '1' else '1'
return flips
if __name__ == "__main__":
N, M = map(int, input().split())
coins = [list(input().strip()) for _ in range(N)]
result = flip_coins(N, M, coins)
print(result)
반응형
'공부 > 코딩테스트' 카테고리의 다른 글
백준 1522번: 문자열 교환, CPP C++ 답안, 백준 코딩테스트 C++ CPP 풀이 (0) | 2024.06.22 |
---|---|
백준 1446번: 지름길 C++ CPP 답안, 백준 코딩테스트 CPP 풀이 (0) | 2024.06.22 |
백준 1389번: 케빈 베이컨의 6단계 법칙 Python 파이썬 답안, 백준 코딩테스트 파이썬 풀이 (0) | 2024.06.22 |
백준 1149번: RGB 거리. Python 파이썬 답안, 백준 코딩테스트 파이썬 풀이 (0) | 2024.06.22 |
백준 1124번: 언더프라임 Python 답안, 백준 코딩테스트 파이썬 풀이 (0) | 2024.06.22 |
댓글