์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- ์ฝ๋ฉํ ์คํธ์ค๋น
- reducible
- ํ๋ ์ ๊ตฌ์กฐ
- ์๋น์ค ํ๋ฆฌ๋ฏธํฐ๋ธ
- tcp ํ๋กํ ์ฝ
- ๊ฐ๋ฐ์์ทจ์
- ๋น์ฃผ๊ธฐ์ ํธ
- xv6
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- ์ฐ๋ถํฌdb
- ์์๋ฒํธ
- mariadb
- ์ค๋ฅ์ ์ด
- til
- git merge
- tcp ์ธ๊ทธ๋จผํธ
- well known ํฌํธ
- ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ
- ์ค๋ ๋
- ์ค๋ฅ๊ฒ์ถ
- ์ฃผ๊ธฐ์ ํธ
- ํ ํฐ ๋ฒ์ค
- 99ํด๋ฝ
- ๋ฐ์ดํฐ ์ ์ก
- ํญํด99
- ํ๋ก์ด๋์์
- leetcode
- ์ค๋ธ์
- IEEE 802
- i-type
- Today
- Total
Unfazedโ๏ธ๐ฏ
|a - b| = |c - d| ์ ๋๊ฐ ์ฐจ์ด๊ฐ ๊ฐ์ ๊ฒฝ์ฐ ํ์ฉํ๊ธฐ ๋ณธ๋ฌธ
|a - b| = |c - d| ์ ๋๊ฐ ์ฐจ์ด๊ฐ ๊ฐ์ ๊ฒฝ์ฐ ํ์ฉํ๊ธฐ
9taetae9 2024. 9. 19. 23:39๋ ๊ฐ์ ์ฐจ์ด์ ์ ๋๊ฐ์ด ์๋ก ๊ฐ์ ๊ฒฝ์ฐ ์ํ์์๋ |a - b| = |c - d| ์ ๊ฐ์ด ํํํ๋ค.
ํด๋น ๊ฐ๋ ์ ์ ์์งํ๊ณ ์์ผ๋ฉด ์๋์ ๊ฐ์ด ๋ค์ํ ์ํฉ์์ ์ด ๊ฐ๋ ์ ํ์ฉํ ์ ์๋ค.
1. ๊ธฐํํ์ ๊ด๊ณ ํ์
- ์: N-Queen ๋ฌธ์ ์์ ๋๊ฐ์ ๊ด๊ณ ํ์ธ
- ์์ฉ: ๊ฒฉ์ ๊ธฐ๋ฐ ๊ฒ์, ๊ฒฝ๋ก ์ฐพ๊ธฐ ์๊ณ ๋ฆฌ์ฆ
์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ํ๊ฐ ์ฐจ์ด์ ์ด๊ฐ ์ฐจ์ด๊ฐ ๋์ผํ ๊ฒฝ์ฐ ์ A, ์ B๋ ๋์ผ ๋๊ฐ์ ์์ ๋์ธ๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
ํด๋น ๊ฒฝ์ฐ๋ฅผ N-queen ๋ฌธ์ ์์ ๋๊ฐ์ ์์ ๋ง์ด ๋์ด๋ ๊ฒฝ์ฐ์ ์์ธ๋ฅผ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉํ ์ ์๋ค.
ex ) if(Math.abs(x2 - x1) == Math.abs(y2 - y1))
- A* ์๊ณ ๋ฆฌ์ฆ์์ ๋๊ฐ์ ์ด๋ ๋น์ฉ ๊ณ์ฐ
- ๋ก๋ด ๋ด๋น๊ฒ์ด์ ์์ ์ฅ์ ๋ฌผ ํํผ ๊ฒฝ๋ก ๊ณ์ฐ
double calculateHeuristic(int x1, int y1, int x2, int y2) {
int dx = Math.abs(x2 - x1); int dy = Math.abs(y2 - y1);
int diagonalSteps = Math.min(dx, dy);
int straightSteps = Math.max(dx, dy) - diagonalSteps;
return diagonalSteps * Math.sqrt(2) + straightSteps;
}
2. ์๊ฐ ๊ฐ๊ฒฉ ๋ถ์
- ์: ์ด๋ฒคํธ ๊ฐ์ ์ผ์ ํ ์๊ฐ ๊ฐ๊ฒฉ ํ์ธ
- ์์ฉ: ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ, ์๊ณ์ด ๋ฐ์ดํฐ ๋ถ์
์ด๋ฒคํธ ๊ฐ์ ์๊ฐ ๊ฐ๊ฒฉ์ด ์ผ์ ํ์ง ํ์ธ์ ํ์ธํ๊ณ ์ถ์ ์ํฉ์์๋ ํ์ฉ๋ ์ ์๋ค.
ex)
boolean isConstantInterval(long[] timestamps) {
if (timestamps.length < 3) return true;
long interval = Math.abs(timestamps[1] - timestamps[0]);
for (int i = 2; i < timestamps.length; i++) {
if (Math.abs(timestamps[i] - timestamps[i-1]) != interval) {
return false;
}
}
return true;
}
3. ํจํด ์ธ์
- ์: ๋ฌธ์์ด์์ ๋ฐ๋ณต๋๋ ํจํด ์ฐพ๊ธฐ
- ์์ฉ: ๋ฐ์ดํฐ ์์ถ, ์ํธํ
ex) "abcabcabcabc"์ ๊ฐ์ ๋ฌธ์์ด์์ ๋ฐ๋ณต๋๋ ๊ฐ์ฅ ์งง์ ํจํด ์ฐพ๊ธฐ (|s[i] - s[i+k]| == 0 (์ฌ๊ธฐ์ k๋ ํจํด์ ๊ธธ์ด))
String findPattern(String s) {
for (int k = 1; k <= s.length() / 2; k++) {
if (s.length() % k == 0) {
boolean isPattern = true;
for (int i = 0; i < s.length() - k; i++) {
if (s.charAt(i) != s.charAt(i + k)) {
isPattern = false;
break;
}
}
if (isPattern) {
return s.substring(0, k);
}
}
}
return s;
}
4. ๊ท ํ ์กํ ๊ตฌ์กฐ ํ์ธ
- ์: ์ด์ง ํธ๋ฆฌ์ ๊ท ํ ์ํ ๊ฒ์ฌ
- ์์ฉ: ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ต์ ํ, ๋คํธ์ํฌ ํ ํด๋ก์ง ๋ถ์
ex) ํธ๋ฆฌ๊ฐ ๊ท ํ์ ์ด๋ฃจ๋์ง ํ์ธํ๊ธฐ (๋ชจ๋ ๋ฆฌํ ๋ ธ๋์ ๊น์ด ์ฐจ์ด๊ฐ 1 ์ดํ)
๊น์ด ์ฐจ์ด์ ์ ๋๊ฐ์ด 1์ดํ์ธ์ง ํ์ธ : |depth(leftSubtree) - depth(rightSubtree)| <= 1
class TreeNode {
TreeNode left, right;
int val;
}
boolean isBalanced(TreeNode root) {
return checkBalance(root) != -1;
}
int checkBalance(TreeNode node) {
if (node == null) return 0;
int leftHeight = checkBalance(node.left);
if (leftHeight == -1) return -1;
int rightHeight = checkBalance(node.right);
if (rightHeight == -1) return -1;
if (Math.abs(leftHeight - rightHeight) > 1) return -1;
return Math.max(leftHeight, rightHeight) + 1;
}
'๋ฌธ์ ํด๊ฒฐ (PS) > ๊ธฐ์ตํด๋ ๊ฒ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ด์ง ํ์] int mid = left + (right - left) / 2; (0) | 2025.02.01 |
---|---|
2์ ์ ๊ณฑ์ ํ๋ณ, ์๊ฑฐ๋ ๊ฐ์ ์๋ค ์ค ๊ฐ์ฅ ํฐ 2์ ์ ๊ณฑ์ ๊ตฌํ๊ธฐ (0) | 2024.01.17 |
10์ ์ ๊ณฑ์์ ๋ชจ๋๋ก 9 ์ฐ์ฐ์ ํ์ฉ, ๋์งํธ ๋ฃจํธ(์๋ฆฟ์๊ทผ), repeated digital sum (0) | 2024.01.13 |
๋ฐฐ์ ํ์ ๋ฒ (0) | 2024.01.13 |
๋ถ๋ถ ์์ด (0) | 2023.12.22 |