๐ 1. ๋ฌธ์ ์ค๋ช


๐ก 2. ์ ๊ทผ๋ฐฉ์
์
์ถ๋ ฅ ์๋ก ์ฃผ์ด์ง route ๋ฐฐ์ด์ ๋ง๋๊ทธ๋ํ๋ก ๊ทธ๋ ค ๋ดค๋ค.

์ต์ํ์ ์นด๋ฉ๋ผ๋ฅผ ๋ฐฐ์นํด์ผ ํ๋ฏ๋ก ๊ตฌ๊ฐ ์ข
๋ฃ ์์น๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ

์ฐจ๋์ด ๊ตฌ๊ฐ์์ ์นด๋ฉ๋ผ๋ฅผ ๋จ ํ ๋ฒ๋ง์ด๋ผ๋ ๋ง๋๋ฉด ๋จ
์ข
๋ฃ ์ง์ ์์ ๋ค์ ๊ตฌ๊ฐ๊ณผ ๊ฒน์น๊ฒ ๋๋ฏ๋ก ์ต์ํ์ ์นด๋ฉ๋ผ๋ฅผ ๋ฐฐ์น๊ฐ๋ฅ

์นด๋ฉ๋ผ ๋ฐฐ์น๋ ๋๋ก์ ๊ฐ์ฅ ์ผ์ชฝ ๋๋ถํฐ ํ์ํ๋ฉฐ ์์๋๋ค.
์
์ถ๋ ฅ ์์์์ MIN_VALUE์ธ -20 ์ง์ ๋ถํฐ ์ค๋ฅธ์ชฝ์ผ๋ก ๊ฐ๋ฉฐ ์ข
๋ฃ๊ตฌ๊ฐ๊ณผ ์์๊ตฌ๊ฐ์ด ๊ฒน์น๋ ๋ถ๋ถ์ ์นด๋ฉ๋ผ๊ฐ ๋ฐฐ์น๋๋ค.
๊ตฌ๊ฐ ์ค ๊ฐ์ฅ ์ฒ์์ผ๋ก ๋ง๋๋ ์ข
๋ฃ ์์น๋ -15์ด๋ค.
๋ฐ๋ผ์ ์ด ์์น์ ์ฒซ ๋ฒ์งธ ์นด๋ฉ๋ผ๋ฅผ ์ค์นํ๋ค.
๊ทธ๋ฆฌ๊ณ -13์ง์ ์์ ํ์ฌ ๊ตฌ๊ฐ๊ณผ ๋ค์ ๊ตฌ๊ฐ์ด ๋ง๋์ง๋ง ์ด๋ฏธ ํด๋น ๊ตฌ๊ฐ์๋ ์นด๋ฉ๋ผ๊ฐ ์ค์น ์๋ฃ ๋์์ผ๋ฏ๋ก ์คํตํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค์ ๊ตฌ๊ฐ์ธ [-14, -5]์ [-5, -3]์ด ๊ฒน์น๋ ๊ตฌ๊ฐ์ ๋๋ฒ์งธ ์นด๋ฉ๋ผ๋ฅผ ์ค์นํ๋ค.
โญ 3. ์ ๋ต์ฝ๋
import java.util.*;
class Solution {
public int solution(int[][] routes) {
// ์นด๋ฉ๋ผ๋ฅผ ์ค์นํ ํ์ (๋์ค์ ๋ฆฌํดํ ๊ฐ)
int cameraCount = 0;
// ์ด๋ ๊ฒฝ๋ก ์ข
๋ฃ ์ง์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
Arrays.sort(routes, new Comparator<int[]>() {
@Override
public int compare(int[] route1, int[] route2) {
// ๋ ๊ฒฝ๋ก์ ๋ ์ง์ (route[1])์ ๋น๊ตํ์ฌ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๊ธฐ
return route1[1] - route2[1];
}
});
// ์ค์น๋ ์นด๋ฉ๋ผ๊ฐ ์ง๋๊ฐ ์ ์๋ ๊ฐ์ฅ ๋ ์ง์
int lastCameraPosition = Integer.MIN_VALUE;
// ๋ชจ๋ ์ฐจ๋์ ๊ฒฝ๋ก๋ฅผ ๋๋ฉด์ ์นด๋ฉ๋ผ๊ฐ ํ์ํ ๊ตฌ๊ฐ์ ์ฐพ๊ธฐ
for (int[] route : routes) {
// ํ์ฌ ์ฐจ๋์ ์์ ์ง์ (route[0])์ด ๊ธฐ์กด ์นด๋ฉ๋ผ์ ๋ ์ง์ (lastCameraPosition)๋ณด๋ค ๋ค์ชฝ์ด๋ฉด ์นด๋ฉ๋ผ๊ฐ ํ์
if (lastCameraPosition < route[0]) {
// ์นด๋ฉ๋ผ ์ค์น
lastCameraPosition = route[1];
cameraCount++; // ์นด๋ฉ๋ผ ์ค์น ํ์ ์ฆ๊ฐ
}
}
// ์ค์นํ ์นด๋ฉ๋ผ์ ๊ฐ์ ๋ฐํ
return cameraCount;
}
}
๐๐ป ์ข์์ ๊ฐ์ฅ ๋ง์ด ๋ฐ์ ์ฝ๋
import java.util.Arrays;
import java.util.Comparator;
class Solution {
public int solution(int[][] routes) {
Arrays.sort(routes, (a, b) -> Integer.compare(a[1], b[1]));
int ans = 0;
int last_camera = Integer.MIN_VALUE;
for (int[] a : routes) {
if (last_camera < a[0]) {
++ans;
last_camera = a[1];
}
}
return ans;
}
}
๐ฆ 4. ๊ฐ์ ์ ํ ๋ฌธ์
[ํ๋ก๊ทธ๋๋จธ์ค] (Java) ์ฒด์ก๋ณต (๊ทธ๋ฆฌ๋/Greedy)
๐ 1. ๋ฌธ์ ์ค๋ช ๐ก 2. ์ ๊ทผ๋ฐฉ์๋ฌธ์ ์์ ์ฃผ์ด์ง ๊ฒn : ์ ์ฒด ํ์์ ์lost : ์ฒด์ก๋ณต ๋๋๋นํ ํ์๋ค์ ๋ฒํธ๋ค (๋ฐฐ์ด) reserve : ์ฌ๋ฒ ๊ฐ์ ธ์จ ํ์ ๋ฒํธ๋ค (๋ฐฐ์ด)์ฒด์ก๋ณต์ ์,๋ค ๋ฒํธ ํ์ ์๋ง ๋น๋ ค
awesomepossum.tistory.com
[ํ๋ก๊ทธ๋๋จธ์ค] (Java) ์กฐ์ด์คํฑ (๊ทธ๋ฆฌ๋)
๐ 1. ๋ฌธ์ ์ค๋ช ๐ก 2. ์ ๊ทผ๋ฐฉ์ ์กฐ์ด์คํฑ์ ์ ์์ผ๋ก ์ด๋ํ๋ ์ข์ฐ ์ด๋ ํ์(move) ์กฐ์ด์คํฑ ์ข์ฐ๋ก ์ด๋ํ๋ฉด์ ์ํ๋ฒณ ๋ณ๊ฒฝ๋ฅผ ์ํด ์ํ ์ด๋ ํ๋ ํ์(answer) ๋ ๊ฐ๋ฅผ answer์ ๋์ ํ๋ฉด์ ๋
awesomepossum.tistory.com
[ํ๋ก๊ทธ๋๋จธ์ค] (Java) ํฐ ์ ๋ง๋ค๊ธฐ (๊ทธ๋ฆฌ๋/Greedy)
๐ 1. ๋ฌธ์ ์ค๋ช ๐ก 2. ์ ๊ทผ๋ฐฉ์์์ ํ์์ ์๋๋ ์ด์ ๋ฌธ์ ์์ numberโค1,000,000์ผ๋ก ์ต๋ ๋ฐฑ๋ง์๋ฆฌ ์ซ์๊ฐ ๋ ์ ์๋ค. number ๊ฐ์ด ๋๋ฌด ์ปค์ ์์ ํ์์ ํ์ค์ ์ผ๋ก ๋ถ๊ฐ๋ฅํ๋ค. k๋ 1 ์ด์ len(num
awesomepossum.tistory.com
[ํ๋ก๊ทธ๋๋จธ์ค] (Java) ๊ตฌ๋ช ๋ณดํธ (๊ทธ๋ฆฌ๋/Greedy)
๐ 1. ๋ฌธ์ ์ค๋ช ๐ก 2. ์ ๊ทผ๋ฐฉ์ ๋ฌธ์ ์ ํ์กฐ๊ฑด1. ํ ๋ฒ์ ์ต๋ ๋๋ช ๊น์ง ๋ณดํธ์ ํ์ธ ์ ์์2. ๋ชธ๋ฌด๊ฒ ํฉ์ด `limit` ์ดํ์ฌ์ผ ํจ ๋ฐ๋ผ์ ์ต์๋ณดํธ๋ฅผ ์ฌ์ฉํ๋ ์ ๋ต์ ์ง๋ ค๋ฉด ๋ฐฐ์ด์ ์ ๋ ฌํ์ฌ ๊ฐ์ฅ
awesomepossum.tistory.com
'Algorithm > Programmers_Best' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ 1. ๋ฌธ์ ์ค๋ช


๐ก 2. ์ ๊ทผ๋ฐฉ์
์
์ถ๋ ฅ ์๋ก ์ฃผ์ด์ง route ๋ฐฐ์ด์ ๋ง๋๊ทธ๋ํ๋ก ๊ทธ๋ ค ๋ดค๋ค.

์ต์ํ์ ์นด๋ฉ๋ผ๋ฅผ ๋ฐฐ์นํด์ผ ํ๋ฏ๋ก ๊ตฌ๊ฐ ์ข
๋ฃ ์์น๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ

์ฐจ๋์ด ๊ตฌ๊ฐ์์ ์นด๋ฉ๋ผ๋ฅผ ๋จ ํ ๋ฒ๋ง์ด๋ผ๋ ๋ง๋๋ฉด ๋จ
์ข
๋ฃ ์ง์ ์์ ๋ค์ ๊ตฌ๊ฐ๊ณผ ๊ฒน์น๊ฒ ๋๋ฏ๋ก ์ต์ํ์ ์นด๋ฉ๋ผ๋ฅผ ๋ฐฐ์น๊ฐ๋ฅ

์นด๋ฉ๋ผ ๋ฐฐ์น๋ ๋๋ก์ ๊ฐ์ฅ ์ผ์ชฝ ๋๋ถํฐ ํ์ํ๋ฉฐ ์์๋๋ค.
์
์ถ๋ ฅ ์์์์ MIN_VALUE์ธ -20 ์ง์ ๋ถํฐ ์ค๋ฅธ์ชฝ์ผ๋ก ๊ฐ๋ฉฐ ์ข
๋ฃ๊ตฌ๊ฐ๊ณผ ์์๊ตฌ๊ฐ์ด ๊ฒน์น๋ ๋ถ๋ถ์ ์นด๋ฉ๋ผ๊ฐ ๋ฐฐ์น๋๋ค.
๊ตฌ๊ฐ ์ค ๊ฐ์ฅ ์ฒ์์ผ๋ก ๋ง๋๋ ์ข
๋ฃ ์์น๋ -15์ด๋ค.
๋ฐ๋ผ์ ์ด ์์น์ ์ฒซ ๋ฒ์งธ ์นด๋ฉ๋ผ๋ฅผ ์ค์นํ๋ค.
๊ทธ๋ฆฌ๊ณ -13์ง์ ์์ ํ์ฌ ๊ตฌ๊ฐ๊ณผ ๋ค์ ๊ตฌ๊ฐ์ด ๋ง๋์ง๋ง ์ด๋ฏธ ํด๋น ๊ตฌ๊ฐ์๋ ์นด๋ฉ๋ผ๊ฐ ์ค์น ์๋ฃ ๋์์ผ๋ฏ๋ก ์คํตํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค์ ๊ตฌ๊ฐ์ธ [-14, -5]์ [-5, -3]์ด ๊ฒน์น๋ ๊ตฌ๊ฐ์ ๋๋ฒ์งธ ์นด๋ฉ๋ผ๋ฅผ ์ค์นํ๋ค.
โญ 3. ์ ๋ต์ฝ๋
import java.util.*; class Solution { public int solution(int[][] routes) { // ์นด๋ฉ๋ผ๋ฅผ ์ค์นํ ํ์ (๋์ค์ ๋ฆฌํดํ ๊ฐ) int cameraCount = 0; // ์ด๋ ๊ฒฝ๋ก ์ข
๋ฃ ์ง์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ Arrays.sort(routes, new Comparator<int[]>() { @Override public int compare(int[] route1, int[] route2) { // ๋ ๊ฒฝ๋ก์ ๋ ์ง์ (route[1])์ ๋น๊ตํ์ฌ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๊ธฐ return route1[1] - route2[1]; } }); // ์ค์น๋ ์นด๋ฉ๋ผ๊ฐ ์ง๋๊ฐ ์ ์๋ ๊ฐ์ฅ ๋ ์ง์ int lastCameraPosition = Integer.MIN_VALUE; // ๋ชจ๋ ์ฐจ๋์ ๊ฒฝ๋ก๋ฅผ ๋๋ฉด์ ์นด๋ฉ๋ผ๊ฐ ํ์ํ ๊ตฌ๊ฐ์ ์ฐพ๊ธฐ for (int[] route : routes) { // ํ์ฌ ์ฐจ๋์ ์์ ์ง์ (route[0])์ด ๊ธฐ์กด ์นด๋ฉ๋ผ์ ๋ ์ง์ (lastCameraPosition)๋ณด๋ค ๋ค์ชฝ์ด๋ฉด ์นด๋ฉ๋ผ๊ฐ ํ์ if (lastCameraPosition < route[0]) { // ์นด๋ฉ๋ผ ์ค์น lastCameraPosition = route[1]; cameraCount++; // ์นด๋ฉ๋ผ ์ค์น ํ์ ์ฆ๊ฐ } } // ์ค์นํ ์นด๋ฉ๋ผ์ ๊ฐ์ ๋ฐํ return cameraCount; } }
๐๐ป ์ข์์ ๊ฐ์ฅ ๋ง์ด ๋ฐ์ ์ฝ๋
import java.util.Arrays; import java.util.Comparator; class Solution { public int solution(int[][] routes) { Arrays.sort(routes, (a, b) -> Integer.compare(a[1], b[1])); int ans = 0; int last_camera = Integer.MIN_VALUE; for (int[] a : routes) { if (last_camera < a[0]) { ++ans; last_camera = a[1]; } } return ans; } }
๐ฆ 4. ๊ฐ์ ์ ํ ๋ฌธ์
[ํ๋ก๊ทธ๋๋จธ์ค] (Java) ์ฒด์ก๋ณต (๊ทธ๋ฆฌ๋/Greedy)
๐ 1. ๋ฌธ์ ์ค๋ช ๐ก 2. ์ ๊ทผ๋ฐฉ์๋ฌธ์ ์์ ์ฃผ์ด์ง ๊ฒn : ์ ์ฒด ํ์์ ์lost : ์ฒด์ก๋ณต ๋๋๋นํ ํ์๋ค์ ๋ฒํธ๋ค (๋ฐฐ์ด) reserve : ์ฌ๋ฒ ๊ฐ์ ธ์จ ํ์ ๋ฒํธ๋ค (๋ฐฐ์ด)์ฒด์ก๋ณต์ ์,๋ค ๋ฒํธ ํ์ ์๋ง ๋น๋ ค
awesomepossum.tistory.com
[ํ๋ก๊ทธ๋๋จธ์ค] (Java) ์กฐ์ด์คํฑ (๊ทธ๋ฆฌ๋)
๐ 1. ๋ฌธ์ ์ค๋ช ๐ก 2. ์ ๊ทผ๋ฐฉ์ ์กฐ์ด์คํฑ์ ์ ์์ผ๋ก ์ด๋ํ๋ ์ข์ฐ ์ด๋ ํ์(move) ์กฐ์ด์คํฑ ์ข์ฐ๋ก ์ด๋ํ๋ฉด์ ์ํ๋ฒณ ๋ณ๊ฒฝ๋ฅผ ์ํด ์ํ ์ด๋ ํ๋ ํ์(answer) ๋ ๊ฐ๋ฅผ answer์ ๋์ ํ๋ฉด์ ๋
awesomepossum.tistory.com
[ํ๋ก๊ทธ๋๋จธ์ค] (Java) ํฐ ์ ๋ง๋ค๊ธฐ (๊ทธ๋ฆฌ๋/Greedy)
๐ 1. ๋ฌธ์ ์ค๋ช ๐ก 2. ์ ๊ทผ๋ฐฉ์์์ ํ์์ ์๋๋ ์ด์ ๋ฌธ์ ์์ numberโค1,000,000์ผ๋ก ์ต๋ ๋ฐฑ๋ง์๋ฆฌ ์ซ์๊ฐ ๋ ์ ์๋ค. number ๊ฐ์ด ๋๋ฌด ์ปค์ ์์ ํ์์ ํ์ค์ ์ผ๋ก ๋ถ๊ฐ๋ฅํ๋ค. k๋ 1 ์ด์ len(num
awesomepossum.tistory.com
[ํ๋ก๊ทธ๋๋จธ์ค] (Java) ๊ตฌ๋ช ๋ณดํธ (๊ทธ๋ฆฌ๋/Greedy)
๐ 1. ๋ฌธ์ ์ค๋ช ๐ก 2. ์ ๊ทผ๋ฐฉ์ ๋ฌธ์ ์ ํ์กฐ๊ฑด1. ํ ๋ฒ์ ์ต๋ ๋๋ช ๊น์ง ๋ณดํธ์ ํ์ธ ์ ์์2. ๋ชธ๋ฌด๊ฒ ํฉ์ด `limit` ์ดํ์ฌ์ผ ํจ ๋ฐ๋ผ์ ์ต์๋ณดํธ๋ฅผ ์ฌ์ฉํ๋ ์ ๋ต์ ์ง๋ ค๋ฉด ๋ฐฐ์ด์ ์ ๋ ฌํ์ฌ ๊ฐ์ฅ
awesomepossum.tistory.com