[PYTHON] leetcode Subrectangle Queries (mid) 문제풀이
leetcode 에서 easy 만 풀다보니 뭔가 계속 허무해서 mideum 문제를 한번 풀어봤다. 이제서야 알았는데 leetcode 문제를 다 풀기 위해서는 돈을 내야 하더라...(ㅠㅠ) 대부분의 문제가 자물쇠로 잠겨 있어서 무료문제만 골라 풀어야 하는 슬픔. 지금까지 경험해본 사이트의 구조상 굉장히 맘에 들기 때문에 언젠가는 프리미엄 버전을 지를 지도 모르겠다.
일단 이 문제는 easy 와는 많이 다르다. 간단하게 설명하자면, class 를 구현하고, 데이터를 초기화 하고, 데이터를 업데이트 하고, 데이터의 값을 가져오는 3가지 기능을 구현한다.
1 2 1
4 3 4
3 2 1
1 1 1
위와 같은 값을 주면서 사각형(rectangle) 을 만들는 것으로 class 를 초기화 한다. 그리고 아래와 같이 일정 범위(역시 사각형, 작은 사각형)를 정해주고 그 안에 값을 업데이트 (ex: 5) 하는 기능이 있다.
1 2 1
4 5 5
3 5 5
1 1 1
그리고 위와 같은 사각형 데이터를 유지한 상태로 특정 위치의 값, 예를 들어 (0, 1)의 값을 getValue 하면 값을 꺼내서 return 해주면 된다. 여기서 (0, 1) = 4
기능들은 그리 어렵지 않지만 여기도 또 나는 헤매게 된다. 바로 self 라는 기능을 몰랐기 때문이다. -_-
class SubrectangleQueries:
def __init__(self, rectangle: List[List[int]]):
self.targetRec = rectangle
def updateSubrectangle(self, row1: int, col1: int, row2: int, col2: int, newValue: int) -> None:
for i in range(row1, row2 + 1):
for j in range(col1, col2 + 1):
self.targetRec[i][j] = newValue
def getValue(self, row: int, col: int) -> int:
return self.targetRec[row][col]
코드라는게 막상 주석 지우고 잘 정리하면 남는게 별로 없다. 몇시간 동안 고생하면 작성한게 왜 이리 짧은지-_-;
일단 이번 코드에서 중요하게 배운것이 바로
self.targetRec = rectangle
self.변수
self.변수 로 사용하고 있는 것들이다. __init__ 함수에서 만든 데이터를 다른 함수에서 어떻게 가져와서 쓸까 고민하다가 global 변수로 만들어서 초기화하고 다른 함수에서 가져다가 쓸려고 했는데, 물론 에러가 발생한다. __init__ 함수에서 self 로 변수를 만들어 두면 나중에 이 class 에서 만든 객체내에서 자유롭게 쓸수 있는 것으로 보인다.
'python' 카테고리의 다른 글
[PYTHON] list 에서 for 문 2개 돌리기 (i, j) (leetcode: number of good pairs) (0) | 2021.04.02 |
---|---|
[PYTHON] list(array) 선언의 두가지 방법 (leetcode: Shuffle the Array) (0) | 2021.04.02 |
[PYTHON] leetcode Richest Customer Wealth (easy) 문제풀이 (0) | 2021.03.19 |
[PYTHON] if 문 논리연산, 같다 다르다, 크거나같다 등 (0) | 2021.03.16 |
[PYTHON] leetcode reverse Integer 문제풀이 (0) | 2021.03.16 |
댓글