반응형
https://leetcode.com/problems/flip-columns-for-maximum-number-of-equal-rows/
구현 문제였습니다.
📕 풀이방법
📔 풀이과정
같은 형식을 가진 row들을 정리해 map형태로 저장해줍니다.
같은 형태란 일방적으로 비트들을 정렬한 후 비교했을 때 두 행의 원소들이 모두 같다는 의미입니다.
python에서는 Counter를 이용해 쉽게 패턴의 개수를 저장할 수 있습니다.
1. nomalize함수를 선언해 row의 첫 번째 원소를 기준으로 행의 원소들을 xor한 연산 결과로 저장된 tuple들을 반환하도록 구현합니다.
예를 들어, row[0]이 0이고 한 행이 [1,0,1] 라면 for loop를 수행해 row[0]과 xor연산하게 되면 행 그대로 반환됩니다. row[0]이 1인 경우 [0,1,0]이 되므로 flip된 형태의 tuple이 반환되게 됩니다. 따라서 전체 row에 대해 수행하게되면 일관된 pattern으로 행들이 구성되게 됩니다.
2. 지역변수 pattern을 선언해 matrix의 행마다 nomalize를 수행한 결과를 Counter에 저장해줍니다.
📔 정답 출력 | 반환
pattern의 value들의 max값을 반환합니다.
📕 Code
📔 Python3
from collections import Counter
class Solution:
def maxEqualRowsAfterFlips(self, matrix: List[List[int]]) -> int:
def nomalize(row):
return tuple(r ^ row[0] for r in row)
pattern = Counter(nomalize(row) for row in matrix)
return max(pattern.values())
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
'Algorithm > Implementation' 카테고리의 다른 글
(SQL) - LeetCode (easy) 1967. Number of Strings That Appear as Substrings in Word (0) | 2024.11.25 |
---|---|
(SQL) - LeetCode (easy) 1975. Maximum Matrix Sum (0) | 2024.11.24 |
(Python3) - LeetCode (Medium) 2257. Count Unguarded Cells in the Grid (0) | 2024.11.21 |
(Python3) - 프로그래머스(연습문제): 카드 뭉치 (0) | 2024.11.17 |
(Python3) - 프로그래머스(코딩 기초 트레이닝): 정수를 나선형으로 배치하기 (0) | 2024.11.14 |