2021. 7. 16. 16:51ใETC/Algorithm
๐๐ป ๋ฌธ์
rows x columns ํฌ๊ธฐ์ธ ํ๋ ฌ์ด ์์ต๋๋ค. ํ๋ ฌ์๋ 1๋ถํฐ rows x columns๊น์ง์ ์ซ์๊ฐ ํ ์ค์ฉ ์์๋๋ก ์ ํ์์ต๋๋ค. ์ด ํ๋ ฌ์์ ์ง์ฌ๊ฐํ ๋ชจ์์ ๋ฒ์๋ฅผ ์ฌ๋ฌ ๋ฒ ์ ํํด, ํ ๋๋ฆฌ ๋ถ๋ถ์ ์๋ ์ซ์๋ค์ ์๊ณ๋ฐฉํฅ์ผ๋ก ํ์ ์ํค๋ ค ํฉ๋๋ค. ๊ฐ ํ์ ์ (x1, y1, x2, y2)์ธ ์ ์ 4๊ฐ๋ก ํํํ๋ฉฐ, ๊ทธ ์๋ฏธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- x1 ํ y1 ์ด๋ถํฐ x2 ํ y2 ์ด๊น์ง์ ์์ญ์ ํด๋นํ๋ ์ง์ฌ๊ฐํ์์ ํ ๋๋ฆฌ์ ์๋ ์ซ์๋ค์ ํ ์นธ์ฉ ์๊ณ๋ฐฉํฅ์ผ๋ก ํ์ ํฉ๋๋ค.
๋ค์์ 6 x 6 ํฌ๊ธฐ ํ๋ ฌ์ ์์์ ๋๋ค.
์ด ํ๋ ฌ์ (2, 2, 5, 4) ํ์ ์ ์ ์ฉํ๋ฉด, ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด 2ํ 2์ด๋ถํฐ 5ํ 4์ด๊น์ง ์์ญ์ ํ ๋๋ฆฌ๊ฐ ์๊ณ๋ฐฉํฅ์ผ๋ก ํ์ ํฉ๋๋ค. ์ด๋, ์ค์์ 15์ 21์ด ์๋ ์์ญ์ ํ์ ํ์ง ์๋ ๊ฒ์ ์ฃผ์ํ์ธ์.
ํ๋ ฌ์ ์ธ๋ก ๊ธธ์ด(ํ ๊ฐ์) rows, ๊ฐ๋ก ๊ธธ์ด(์ด ๊ฐ์) columns, ๊ทธ๋ฆฌ๊ณ ํ์ ๋ค์ ๋ชฉ๋ก queries๊ฐ ์ฃผ์ด์ง ๋, ๊ฐ ํ์ ๋ค์ ๋ฐฐ์ด์ ์ ์ฉํ ๋ค, ๊ทธ ํ์ ์ ์ํด ์์น๊ฐ ๋ฐ๋ ์ซ์๋ค ์ค ๊ฐ์ฅ ์์ ์ซ์๋ค์ ์์๋๋ก ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- rows๋ 2 ์ด์ 100 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
- columns๋ 2 ์ด์ 100 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
- ์ฒ์์ ํ๋ ฌ์๋ ๊ฐ๋ก ๋ฐฉํฅ์ผ๋ก ์ซ์๊ฐ 1๋ถํฐ ํ๋์ฉ ์ฆ๊ฐํ๋ฉด์ ์ ํ์์ต๋๋ค.
- ์ฆ, ์๋ฌด ํ์ ๋ ํ์ง ์์์ ๋, i ํ j ์ด์ ์๋ ์ซ์๋ ((i-1) x columns + j)์ ๋๋ค.
- queries์ ํ์ ๊ฐ์(ํ์ ์ ๊ฐ์)๋ 1 ์ด์ 10,000 ์ดํ์ ๋๋ค.
- queries์ ๊ฐ ํ์ 4๊ฐ์ ์ ์ [x1, y1, x2, y2]์
๋๋ค.
- x1 ํ y1 ์ด๋ถํฐ x2 ํ y2 ์ด๊น์ง ์์ญ์ ํ ๋๋ฆฌ๋ฅผ ์๊ณ๋ฐฉํฅ์ผ๋ก ํ์ ํ๋ค๋ ๋ป์ ๋๋ค.
- 1 ≤ x1 < x2 ≤ rows, 1 ≤ y1 < y2 ≤ columns์ ๋๋ค.
- ๋ชจ๋ ํ์ ์ ์์๋๋ก ์ด๋ฃจ์ด์ง๋๋ค.
- ์๋ฅผ ๋ค์ด, ๋ ๋ฒ์งธ ํ์ ์ ๋ํ ๋ต์ ์ฒซ ๋ฒ์งธ ํ์ ์ ์คํํ ๋ค์, ๊ทธ ์ํ์์ ๋ ๋ฒ์งธ ํ์ ์ ์คํํ์ ๋ ์ด๋ํ ์ซ์ ์ค ์ต์๊ฐ์ ๊ตฌํ๋ฉด ๋ฉ๋๋ค.
์คํ ์์
๐ ๋ฌธ์ ํด๊ฒฐ
ํด๊ฒฐ ๋ฐฉ๋ฒ
โ๏ธ ์ข์ธก ์๋จ์ ์ง์ ์ ์ฒซ ์์์ ๐๐ป๋ฐ๋ก ์ ์ฅ (tmp ๋ณ์)
โ๏ธ ↓→↑← ์ ์์๋ก ๋ฐ์ดํฐ ๋ณ๊ฒฝ + ์ํ (min๊ฐ ์ฐพ๊ธฐ)
โ๏ธ min ๊ฐ์ ์ต์ข ๋ต ๋ฐฐ์ด์ ์ถ๊ฐ
์ฝ๋
#include <string>
#include <vector>
using namespace std;
void comp(int &min,int n) {
min = min > n ? n : min;
}
vector<int> solution(int rows, int columns, vector<vector<int>> queries) {
vector<int> answer;
vector<vector<int>> board(rows, vector<int>(columns));
for (int i = 0; i < rows; i++)
for (int j = 0; j < columns; j++)
board[i][j] = (i * columns) + (j + 1);
for (vector<int> q: queries) {
int x1 = q[0]-1, y1 = q[1]-1, x2 = q[2]-1, y2 =q[3]-1;
int x=x1, y = y1, tmp = board[x][y];
int min = tmp;
for (;x < x2;x++) {
comp(min, board[x][y]);
board[x][y] = board[x+1][y];
}
for (;y < y2;y++) {
comp(min, board[x][y]);
board[x][y] = board[x][y+1];
}
for (;x != x1;--x) {
comp(min, board[x][y]);
board[x][y] = board[x-1][y];
}
for (;y != y1;--y) {
comp(min, board[x][y]);
board[x][y] = board[x][y-1];
}
board[x][y+1] = tmp;
answer.push_back(min);
}
return answer;
}
'ETC > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] N ์ผ๋ก ํํ (0) | 2021.07.17 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ค๋จ๊ณ ์นซ์ ํ๋งค (2) | 2021.07.16 |
Brute Force, ํด์ฌ (0) | 2021.03.07 |
Greedy, ๊ตฌ๋ช ๋ณด๋ (0) | 2021.02.28 |
DFS - Depth First Search (0) | 2020.09.20 |
Backend Software Engineer
๐๐ฎ๐ง ยท ๐๐ฎ๐๐ค๐ฃ๐๐จ๐ช๐ฃ ๐๐๐ง๐