문제
[리트코드] Delete Greatest Value in Each Row
https://leetcode.com/problems/delete-greatest-value-in-each-row/description/
문제 해석
(번역: 챗지피티)
m x n
크기의 양의 정수로 구성된 행렬 grid
가 주어집니다.
아래의 연산을 행렬이 비어질 때까지 반복 수행합니다:
- 각 행(row)에서 가장 큰 값을 삭제합니다.
- 만약 같은 값이 여러 개 있다면, 그중 아무 값이나 삭제합니다.
- 삭제된 값들 중 최댓값을 구해, 그 값을
answer
에 더합니다. - 각 반복이 끝날 때마다 열(column)의 개수가 1씩 감소합니다.
연산을 모두 수행한 후, answer
의 최종 값을 반환하면 됩니다.
예제1
입력: grid = [[1, 2, 4], [3, 3, 1]]
출력: 8
설명: 위 그림은 각 단계에서 제거된 값을 보여줍니다.
- 첫 번째 연산:
- 첫 번째 행에서 4를 제거하고, 두 번째 행에서 3을 제거합니다.
- (참고로, 두 번째 행에 3이 두 개 있으므로 둘 중 아무 값을 제거해도 됩니다.)
answer
에 4를 더합니다.
- 두 번째 연산:
- 첫 번째 행에서 2를 제거하고, 두 번째 행에서 3을 제거합니다.
answer
에 3을 더합니다.
- 세 번째 연산:
- 첫 번째 행에서 1을 제거하고, 두 번째 행에서 1을 제거합니다.
answer
에 1을 더합니다.
최종 결과: answer = 4 + 3 + 1 = 8
코드
class Solution {
public:
int deleteGreatestValue(vector<vector<int>>& grid) {
int answer = 0;
// 이차원 벡터의 열의 수가 0보다 클 때까지 반복
while (grid[0].size() > 0) {
int max_value = 0; // 전체 행에서의 최댓값
// 이차원 벡터의 행의 수만큼 반복
for (int i = 0; i < grid.size(); i++) {
// 해당 행의 최댓값의 인덱스
int max_idx = max_element(grid[i].begin(), grid[i].end()) - grid[i].begin();
// 해당 행의 최댓값
int max_tmp = *max_element(grid[i].begin(), grid[i].end());
// 전체 행에서의 최댓값 갱신
max_value = max(max_value, max_tmp);
// 해당 행에서의 최댓값을 삭제
grid[i].erase(grid[i].begin() + max_idx);
}
answer += max_value; // 최댓값을 누적
}
return answer;
}
};
풀이
이차원 벡터의 열의 수가 0보다 클 때까지 반복을 도는데, 행의 수만큼 내부 반복문을 돌면서
각 행에서의 최댓값을 찾아 행에서 삭제하고,
삭제된 값들 중 최댓값을 누적하여 반환한다.
✅ 핵심 C++ 문법
- 이차원 벡터(배열)의 열의 수:
grid[0].size()
- 이차원 벡터(배열)의 행의 수:
grid.size()
- 이차원 벡터의 한 행에서의 최댓값의 인덱스:
max_element(grid[i].begin(), grid[i].end()) - grid[i].begin();
- 이차원 벡터의 한 행에서의 최댓값:
*max_element(grid[i].begin(), grid[i].end());
- 이차원 벡터에서 i행 j열 원소를 제거:
grid[i].erase(grid[i].begin() + j);
회고
이차원 배열의 행, 열 수를 구하는 것부터 헷갈려서 아직 기본이 많이 부족하구나 싶었다.
쉬운 문제라고 지나치지 않아야 하는 이유…
'99클럽 TIL' 카테고리의 다른 글
99클럽 코테 스터디 25일차 TIL + 힙(C++) (0) | 2024.11.21 |
---|---|
99클럽 코테 스터디 24일차 TIL + 힙(C++) (0) | 2024.11.20 |
99클럽 코테 스터디 22일차 TIL + 힙(C++) (0) | 2024.11.19 |
99클럽 코테 스터디 21일차 TIL + 힙(C++) (0) | 2024.11.17 |
99클럽 코테 스터디 20일차 TIL + 완전탐색(C++) (0) | 2024.11.16 |