ํฐ์คํ ๋ฆฌ ๋ทฐ
[Java] ํ๋ก๊ทธ๋๋จธ์ค - ์ง๊ฒ๋ค๋ฆฌ ๊ฑด๋๊ธฐ
๊ฐ๋ฐ๊ฐ๊ตด๐ธ 2022. 7. 13. 16:57[๋ฌธ์ ]
https://school.programmers.co.kr/learn/courses/30/lessons/64062
[ํ์ด]
๋จ์ํ ์น๊ตฌ๋ฅผ ํ๋ช ์ฉ ์ง๊ฒ๋ค๋ฆฌ๋ฅผ ๊ฑด๋๋ ๋ฐฉ์์ผ๋ก ํ์ด๋ฅผ ์งํํด๋ณด๋, ์ ํ์ฑ์ ํต๊ณผํ์์ง๋ง ํจ์จ์ฑ์์ ๊ฑธ๋ ธ์ต๋๋ค.
์๊ฐ์ ๋จ์ถ์์ผ ๋ณด๊ธฐ ์ํด ์ต์๊ฐ min์ ๊ตฌํด, 1์นธ์ฉ ์ด๋ํ ์ ์๋ ์น๊ตฌ๋ค์ ๊ฑด๋ํ, ๋๋จธ์ง๋ฅผ ๊ฑด๋๊ฒ ํด๋ณด์์ง๋ง ์ญ์๋ ํจ์จ์ฑ์์ ํต๊ณผํ์ง ๋ชปํด ํ์ด๋ฅผ ์ฐธ๊ณ ํ์์ต๋๋ค.
https://tech.kakao.com/2020/04/01/2019-internship-test/
ํ์ด๋ฅผ ์ฐพ์๋ณธ ๊ฒฐ๊ณผ ์ด์งํ์์ผ๋ก ํ์ดํ๋ ๋ฌธ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, [2, 4, 5, 3, 2, 1, 4, 2, 5, 1] ๊ฐ ์ฃผ์ด์ก๋ค๋ฉด ์ต์๊ฐ left๋ 1, ์ต๋๊ฐ right๋ 5๋ก ์ธํ ๋ฉ๋๋ค.
while๋ฌธ์ ํตํด ์ด์งํ์์ ์งํํ๋๋ฐ, mid = (right + left)/2 ๊ฐ ๋๊ณ ๊ฐ mid๋ง๋ค cross()๋ฅผ ํตํด ํด๋น mid ๊ฐ์ผ๋ก ๊ฑด๋์ ์๋์ง ํ์ธํ๋ฉฐ mid๋ฅผ ๊ฐฑ์ ํด์ค๋๋ค.
๋ง์ฝ mid๋ก ๊ฑด๋ ์ ์๋ค๋ฉด mid๋ณด๋ค ์์ ๊ฐ์ผ๋ก ๋ชจ๋ ๊ฑด๋์ ์์ผ๋ฏ๋ก left = mid + 1์, mid๋ก ๊ฑด๋์ ์๋ค๋ฉด ํด๋น mid๋ณด๋ค ํฐ๊ฐ์ผ๋ก๋ ๊ฑด๋ ์ ์๋ค๋ ๋ป์ด๋ฏ๋ก right = mid -1 ๋ก ๊ฐฑ์ ํด์ฃผ์์ต๋๋ค.
1) mid = 3 -> ๊ฑด๋ ์ ์์ -> left =4๋ก ๊ฐฑ์
2) mid = 4 -> ๊ฑด๋ ์ ์์ -> right = 3์ผ๋ก ๊ฐฑ์
3) left > right ์ด๋ฏ๋ก ์ด๋ถํ์ ์ข ๋ฃ
์ด๋ฌํ ๊ณผ์ ์ ๊ฑฐ์น๊ณ ๋๋ฉด right์ ๊ฐ๋ฅํ ์ต๋๊ฐ์ด ๋ค์ด๊ฐ๊ฒ ๋ฉ๋๋ค.
[์ฝ๋]
class Solution {
public int solution(int[] stones, int k) {
int answer = 0;
// ๊ฐ์ฅ ์์ ๊ฐ ์ฐพ๊ธฐ
int left = stones[0];
int right = stones[0];
for(int i=1;i<stones.length;i++) {
if(left > stones[i]) {
left = stones[i];
}
if(right < stones[i]) {
right = stones[i];
}
}
// ์ด๋ถํ์
while(left <= right) {
int mid = (left + right)/2;
if(cross(stones, k, mid)) {
left = mid + 1;
} else {
right = mid - 1;
}
}
answer = right;
return answer;
}
public static boolean cross(int[] stones, int k, int m) {
int cnt = 0;
for(int i=0;i<stones.length;i++) {
if(stones[i] - m < 0) {
cnt++;
} else {
cnt = 0;
}
if(cnt == k) {
return false;
}
}
return true;
}
}
'Algorithm > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] ํ๋ก๊ทธ๋๋จธ์ค - ๋ด์ค ํด๋ฌ์คํฐ๋ง (0) | 2022.08.11 |
---|---|
[Java] ํ๋ก๊ทธ๋๋จธ์ค - ํธํ ๋ฐฉ ๋ฐฐ์ (0) | 2022.07.22 |
[Java] ํ๋ก๊ทธ๋๋จธ์ค - ๋ถ๋ ์ฌ์ฉ์ (0) | 2022.07.12 |
[Java] ํ๋ก๊ทธ๋๋จธ์ค - ํํ (0) | 2022.07.12 |
[Java] ํ๋ก๊ทธ๋๋จธ์ค - ํฌ๋ ์ธ ์ธํ๋ฝ๊ธฐ ๊ฒ์ (0) | 2022.07.11 |
- Total
- Today
- Yesterday
- http
- ๋ฐฑ์ค
- JavaScript
- ๋์์ธ ํจํด
- ์นด์นด์ค ์ธํด
- ์๊ณ ๋ฆฌ์ฆ
- ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ
- ์๋ฐ์คํฌ๋ฆฝํธ
- ์ด๋ถํ์
- ์๋ฐ
- ์ฝ๋ฉํ ์คํธ
- git
- fp
- ๋ฐฑ์ค javascript
- TDD
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
- ๋ ์์ปฌ ํ๊ฒฝ
- map
- ์ด์์ฒด์
- ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ deep dive
- ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ
- ๋ฐฑ์ค node.js
- ๋คํธ์ํฌ
- ํ๋กํผํฐ
- ์ ์ญ ๋ณ์
- Baekjoon
- ํ๋กํ ์ฝ
- ํฌํฌ์ธํฐ
- ํ๋ก๊ทธ๋๋จธ์ค
- 2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |