Question1 - [미들러] 하위사각형 쿼리
문제 설명 https://leetcode.com/problems/subrectangle-queries/description/
Implement the class SubrectangleQueries which receives a rows x cols rectangle as a matrix of integers in the constructor and supports two methods:
1. updateSubrectangle(int row1, int col1, int row2, int col2, int newValue)
Updates all values with newValue in the subrectangle whose upper left coordinate is (row1,col1) and bottom right coordinate is (row2,col2).
2. getValue(int row, int col)
Returns the current value of the coordinate (row,col) from the rectangle.
Example 1:
Input
["SubrectangleQueries","getValue","updateSubrectangle","getValue","getValue","updateSubrectangle","getValue","getValue"]
[[[[1,2,1],[4,3,4],[3,2,1],[1,1,1]]],[0,2],[0,0,3,2,5],[0,2],[3,1],[3,0,3,2,10],[3,1],[0,2]]
Output
[null,1,null,5,5,null,10,5]
Explanation
SubrectangleQueries subrectangleQueries = new SubrectangleQueries([[1,2,1],[4,3,4],[3,2,1],[1,1,1]]);
// The initial rectangle (4x3) looks like:
// 1 2 1
// 4 3 4
// 3 2 1
// 1 1 1
subrectangleQueries.getValue(0, 2); // return 1
subrectangleQueries.updateSubrectangle(0, 0, 3, 2, 5);
// After this update the rectangle looks like:
// 5 5 5
// 5 5 5
// 5 5 5
// 5 5 5
subrectangleQueries.getValue(0, 2); // return 5
subrectangleQueries.getValue(3, 1); // return 5
subrectangleQueries.updateSubrectangle(3, 0, 3, 2, 10);
// After this update the rectangle looks like:
// 5 5 5
// 5 5 5
// 5 5 5
// 10 10 10
subrectangleQueries.getValue(3, 1); // return 10
subrectangleQueries.getValue(0, 2); // return 5
Constraints:
- There will be at most 500 operations considering both methods: updateSubrectangle and getValue.
- 1 <= rows, cols <= 100
- rows == rectangle.length
- cols == rectangle[i].length
- 0 <= row1 <= row2 < rows
- 0 <= col1 <= col2 < cols
- 1 <= newValue, rectangle[i][j] <= 10^9
- 0 <= row < rows
- 0 <= col < cols
문제풀이
trial1
배열의 일부를 변형 및 업데이트 하는 클래스의 메소드를 작성하는 문제였다.
문제에서 아래처럼 기본 틀이 주어져있기 때문에, 클래스 내에 각 함수의 코드를 적어주면 되었다.
update 메소드를 작성하는 것이 가장 중요해 보였던 문제.
class SubrectangleQueries(object) :
def __init__(self, rectangle) :
def updateSubrectangle(self, row1, col1, row2, col2, newValue) :
def getValue(self, row, col) :
1) __init__ 메소드 : rectangle 객체를 생성한다.
2) update 메소드 : row1,col1 의 인덱스부터 row2, col2의 인덱스까지 (범위) 모든 값을 newValue로 대체한다.
- example 1에서 subrectangleQueries.updateSubrectangle(0, 0, 3, 2, 5)를 실행하자, 4x3 행렬의 모든 값들이 5로 바뀌었다.
- 즉 (0,0) 위치에서 시작해서, (0,1), (0,2), (1,0), (1,1), ....(3,2) 까지 (0,0)부터 (3,2)까지 범위 내의 모든 값을 대체해주는 기능임을 알 수 있다.
3) getvalue 메소드 : 주어진 row, col의 인덱스에 해당하는 rectangle의 값을 반환한다.
각 기능을 채워준 최종 코드는 아래와 같다.
class SubrectangleQueries(object):
def __init__(self, rectangle):
# rectangle 객체 생성
self.rectangle = rectangle
def updateSubrectangle(self, row1, col1, row2, col2, newValue):
# 해당 행,열 위치의 값을 New Value로 변경 (범위로 제공)
for i in range(row1, row2+1):
for j in range(col1, col2+1):
self.rectangle[i][j] = newValue
def getValue(self, row, col):
# 해당 위치의 값을 반환
return self.rectangle[row][col]
'Dev' 카테고리의 다른 글
[코테] 99클럽 코테 스터디 30일차 TIL - 문자열 (0) | 2024.06.19 |
---|---|
[코테] 99클럽 코테 스터디 28일차 TIL - 배열 (0) | 2024.06.17 |
[코테] 99클럽 코테 스터디 24일차 TIL - 그래프 (0) | 2024.06.13 |
[코테] 99클럽 코테 스터디 21일차 TIL - 동적계획법 (2) | 2024.06.10 |
[코테] 99클럽 코테 스터디 18일차 TIL - 동적계획법 (0) | 2024.06.07 |