Tags
- ๊ทธ๋ํ ์ด๋ก
- stack
- ๊ต์ฌ
- Dynamic Programming
- LV2
- Java
- ์ ๋ ฌ
- BFS
- Study
- PGM
- CodingTest
- Python
- ๊ตฌํ
- ๋ฌธ์์ด
- ์๋ฎฌ๋ ์ด์
- greedy
- DP
- ์ ์๋ก
- Brute Force Algorithm
- ๊ทธ๋ํ ํ์
- BOJ
- ์ํ
- SpringBoot
- sort
- ๋ฐฑํธ๋ํน
- ๊น์ด ์ฐ์ ํ์
- ๋๋น ์ฐ์ ํ์
- dfs
- ์๋ฃ๊ตฌ์กฐ
- queue
Archives
๊ธฐ๋ก๋ฐฉ
Lv.2 : n^2 ๋ฐฐ์ด ์๋ฅด๊ธฐ ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- n x n ๊ฒฉ์ํ์ (0, 0) ๋ถํฐ (n - 1, n - 1)๊น์ง ํ๋์ด ํผ์ง๋ฏ ์ซ์๋ฅผ ์ฑ์ด๋ค.
- ๊ฐ ํ์ ์์๋๋ก ์ด์ด ๋ถ์ธ ๋ค, 0๋ถํฐ n-1 ์ค left ~ right๋ฅผ ์๋ผ์ int ๋ฐฐ์ด๋ก ๋ฐํํ๋ค.
๐ธ ๋ฌธ์ ํ์ด ๐ธ
- ๊ฒฉ์ํ์ ์ซ์๋ 1 ~ n ์ผ๋ก ์ฑ์ฐ์ง๋ง, ์ธ๋ฑ์ค๋ 0 ~ n-1 ์ด๋ผ๋ ์ ์ ์ฃผ์ํ๋ค.
- n์ ๋ฒ์๊ฐ 100๋ง์ด๊ณ , left, right๋ n^2๊น์ง ์ฃผ์ด์ง๋ค๊ณ ํ๋ค.
- ํ์ง๋ง ๋ฐํ ๋ฐฐ์ด์ด int ํ์ด๊ณ ๋ฌธ์ ์กฐ๊ฑด์ rifht - left๋ 1๋ง ๋ฏธ๋ง์ด๋ผ๊ณ ์ฃผ์ด์ก๋ค.
- ๊ฒฉ์ํ์ ๊ฐ์ ์ ๋ถ ์ ์ฅํ๋ฉด 100๋ง * 100๋ง ํฌ๊ธฐ์ ๋ฐฐ์ด์ด๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ด๊ณผํ๋ค.
- ๋ฐ๋ผ์ ์ ์ฅํ์ง ์๊ณ , ์ธ๋ฑ์ค๋ง ์ด๋ํ๋ฉฐ ์ ๋ต ๋ฐฐ์ด์ ๋ง๋ค์ด๋ด ๋ฐํํ๋ค.
- ํ์ด๋ฅผ ์ํด 3ํ ์ฝ๋๋ฅผ ์์ฑํ๋ค
- ์ฒซ ํ์ด๋ ๊ฒฉ์ํ ๊ฐ์ ์ ์ฅํ๋ ค๊ณ ํด์ ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ๊ฐ ๋ฌ๋ค.
- ๋ ๋ฒ์งธ ํ์ด๋ left์ right๊ฐ ๊ฒฉ์ํ์์ ๊ฐ์ ํ์ธ์ง ํ์ธํด์ ๋ฐ๋ก ์ฒ๋ฆฌํ ์ฝ๋๋ก ์ ๋ต์ด ๋์ค๊ธด ํ๋ค.
- ์ธ ๋ฒ์งธ ํ์ด๋ ๋ค๋ฅธ ์ฌ๋๋ค์ ํ์ด๋ฅผ ๋ณด๊ณ ๋ฆฌํํ ๋ง ํ ๊ฒ์ธ๋ฐ, left์ right๋ฅผ ๊ตฌ๋ถํด ๋ฐ๋ก ์ฒ๋ฆฌ ํ ํ์๊ฐ ์์๋ค.
๐ธ ์ฝ๋ 1 : ์ค๋ต ์ฝ๋ ๐ธ
class Solution {
public int[] solution(int n, long left, long right) {
int[][] arr = new int[n][n];
for(int i = 0; i < n; i++) {
for(int j = 0; j <= i; j++) {
arr[i][j] = i+1;
arr[j][i] = i+1;
}
}
int[] answer = new int[(int)(right-left)+1];
int cnt = 0;
for(int i = (int)left; i <= (int)right; i++) {
answer[cnt++] = arr[i/n][i%n];
}
return answer;
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- ๊ฒฉ์ํ์ ๊ฐ์ ์ ์ฅํ๊ณ , ์ธ๋ฑ์ค๋ฅผ ์ด๋ํ๋ฉฐ answer ๋ฐฐ์ด์ ๋ง๋๋ ๋ฐฉ์์ด๋ค.
- ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ๊ฐ ๋๋ค.
๐ธ ์ฝ๋ 2 : ์ ๋ต ์ด์ง๋ง ๋นํจ์จ์ ๐ธ
class Solution {
public int[] solution(int n, long left, long right) {
int[] answer = new int[(int)(right-left)+1];
int lr = (int)(left / n); // left row
int lc = (int)(left % n); // left col
int rr = (int)(right / n); // right row
int rc = (int)(right % n); // right col
int cnt = 0;
if(lr == rr) {
for(int i = lc; i <= rc; i++) {
answer[cnt++] = (lr > i ? lr : i) + 1;
}
} else { // lr < rr
// row == lr
for(int col = lc; col < n; col++) {
answer[cnt++] = (lr > col ? lr : col) + 1;
}
// lr < row < rr
for(int row = lr + 1; row < rr; row++) {
for(int col = 0; col < n; col++) {
answer[cnt++] = (row > col ? row : col) + 1;
}
}
// row == rr
for(int col = 0; col <= rc; col++) {
answer[cnt++] = (rr > col ? rr : col) + 1;
}
}
return answer;
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- left์ right์ ํ๊ณผ ์ด ์ธ๋ฑ์ค๋ฅผ lr, lc, rr, rc๋ก ๋๋ ์ฌ์ฉํ๋ค.
- ๊ฐ์ ํ์ด๋ผ๋ฉด ์ด๋ง ์ด๋ํด์ ๊ฐ์ ์ ์ฅํ๋ค.
- ๋ค๋ฅธ ํ์ด๋ผ๋ฉด left์ ํ, right์ ํ, ๋ ์ฌ์ด์ ํ์ผ๋ก ๋๋ ๊ฐ์ ์ ์ฅํ๋ค.
๐ธ ์ฝ๋ 2 : ์ต์ข ์ฝ๋ ๐ธ
class Solution {
public int[] solution(int n, long left, long right) {
int[] answer = new int[(int)(right-left)+1];
int cnt = 0;
for(long i = left; i <= right; i++) {
answer[cnt++] = (i/n > i%n ? (int)(i/n) : (int)(i%n)) + 1;
}
return answer;
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- ๊ฒฉ์ํ์ ๊ฐ์ ํ๊ณผ ์ด ์ธ๋ฑ์ค ์ค ํฐ ๊ฐ์ด๋ผ๋ ์๋ฆฌ๊ฐ ํต์ฌ์ด๋ค.
- ๋ํ ๊ฐ์ 1๋ถํฐ n์ด๊ธฐ ๋๋ฌธ์ ์ธ๋ฑ์ค์ +1 ๋ก ๊ณ์ฐํด์ฃผ์ด์ผ ํ๋ค.
๐ธ end ๐ธ
- 2์ฐจ์ ๋ฐฐ์ด์์ ์นธ์ ์์์ ๋ชซ๊ณผ ๋๋จธ์ง๋ก ํ์ด ์ธ๋ฑ์ค๋ฅผ ๊ตฌํ ์ ์๋ค๋ ์๋ฆฌ๋ฅผ ์ฌ์ฉํ ๋ฌธ์ ์ด๋ค.
- ๋ค๋ฅธ ์ฌ๋์ ํ์ด๋ ์ฐธ๊ณ ๋ง ํ๋๋ฐ, ์ด๋ฒ์ ์ง์ ๋ฆฌํฉํ ๋งํด๋ณด๋ ํจ์ฌ ๋์์ด ๋ ๊ฒ ๊ฐ๋ค.
- ์์ผ๋ก๋ ์๊ฐ์ด ๋๋ฌด ์ค๋ ๊ฑธ๋ฆฌ์ง ์์๋ค๋ฉด ๋ฆฌํฉํ ๋ง์ ๋ง์ด ํด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.
- ๋์ ๋๋ ํ์ด ์ค์๋ java์ Stream์ ์ด์ฉํ ํ ์ค ํ์ด๊ฐ ์์๋๋ฐ ์ฒ์์ ์ดํด๊ฐ ์๊ฐ๋ค๊ฐ ๋ฆฌํฉํ ๋ง ํ์๋ ์ดํด ํ ์ ์์๋ค.
- Stream ๋ฌธ๋ฒ์ ์์ ๋ชฐ๋ผ์ ๋์ค์ ํ ๋ฒ ๊ณต๋ถํด ๋ณผ ์๊ฐ์ด๋ค.
- ์ฑ์ ๊ฒฐ๊ณผ๋ ์ผ์ชฝ์ด ์ฝ๋ 2, ์ค๋ฅธ์ชฝ์ด ์ฝ๋ 3์ด๋ค.
- ์ฝ๋ 3์ด ์กฐ๊ธ ๋ ๋๋ฆฐ๋์ ๋ฉ๋ชจ๋ฆฌ๋ ์ ๊ฒ ์ฐ๋ ๊ฒ ๊ฐ์๋ฐ, ๋ชซ๊ณผ ๋๋จธ์ง ๊ณ์ฐ์ด ์ค๋ณต์ผ๋ก ์ผ์ด๋์ ์กฐ๊ธ ๋ ๋๋ฆฐ ๊ฒ ๊ฐ๋ค. ๋ฉ๋ชจ๋ฆฌ๋ ์ฝ๋ 2๊ฐ for๋ฌธ ์์์ ์ ์ธ์ ๋ช ๋ฒ ํ๊ธฐ ๋๋ฌธ์ ๋ ์๋ชจ ๋๋ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Lv.2 : ํ๋ ฌ์ ๊ณฑ์ (0) | 2023.10.17 |
---|---|
Lv.2 : ํ ์ธ ํ์ฌ (0) | 2023.10.01 |
Lv.2 : ์ฐ์ ๋ถ๋ถ ์์ด ํฉ์ ๊ฐ์ (0) | 2023.09.22 |
Lv.2 : ๊ทค ๊ณ ๋ฅด๊ธฐ (0) | 2023.09.18 |
Lv.2 : ๋ฉ๋ฆฌ ๋ฐ๊ธฐ (0) | 2023.09.17 |