๋ฌธ์ 1๏ธโฃ (๋ฆฌํธ ์ฝ๋_๋ฌธ์์ด ๋ฐธ๋ฐ์ฑ)
https://leetcode.com/problems/split-a-string-in-balanced-strings/description/
๐ก IDEA : ์ผ์ผํ 'R' ๊ณผ 'L' ์ ๊ฐ์๋ฅผ ์ธ์ ๋น๊ตํ๋ ๊ฒ์ด ์๋ cnt ํ๋์ ๊ฐ์ ํ์ฉํ์ฌ ๋ฐธ๋ฐ์ฑ์ ํ์ธํ๋ค.
class Solution {
public int balancedStringSplit(String s) {
int answer = 0;
int cnt = 0;
char tmp;
for (int i=0; i<s.length(); i++) {
tmp = s.charAt(i);
if (tmp == 'R') cnt++;
else cnt--;
if (cnt == 0) { // 'R' ๊ณผ 'L' ์ด ๊ท ํ์ ์ด๋ฃฌ๊ฒฝ์ฐ
answer++;
cnt = 0;
}
}
return answer;
}
}
/*
ํ์ด
(1) index 0 ๋ถํฐ s.length(), ์ฆ ๋ฌธ์์ด ์ ์ฒด์ ํ์
(2) charAt() ์ ํตํด 'R' & 'L' ๊ฐ์ ํ์ธํ๋ฉฐ 'R' ์ผ ๊ฒฝ์ฐ cnt ๊ฐ์ ํ๋ ์ฆ๊ฐ ์ํค๊ณ 'L' ์ผ ๊ฒฝ์ฐ cnt ๊ฐ์ ํ๋ ๊ฐ์ ์ํด.
(3) ๋ฐ๋ณต๋ฌธ ๋์์ cnt ๊ฐ์ด 0 ์ด๋ฉด R ๊ณผ L ์ด ์ต์ ๋จ์๋ก ์กฐํ๋ฅผ ์ด๋ฃฌ ๊ฒ์ด๋ฏ๋ก answer ๊ฐ์ ํ๋ ์ฆ๊ฐ์ํค๊ณ cnt ๊ฐ์ 0์ผ๋ก ์ด๊ธฐํ ์ํด
*/
๋ฌธ์ 2๏ธโฃ (ํ๋ก๊ทธ๋๋จธ์ค_๊ตฌ๋ช ๋ณดํธ)
https://school.programmers.co.kr/learn/courses/30/lessons/42885
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๐ก IDEA : ๊ฐ์ฅ ๋ฌด๊ฑฐ์ด ์ฌ๋๋ถํฐ ํ์นํ๋ค. ์ด ๋ ๊ฐ์ฅ ๊ฐ๋ฒผ์ด ์ฌ๋๊ณผ ๊ฐ ์ ์์ผ๋ฉด ํจ๊ป ๊ฐ๋ค.
import java.util.Arrays;
class Solution {
public int solution(int[] people, int limit) {
int answer = 0;
Arrays.sort(people); // ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
int size = people.length;
int bigIdx = people.length-1;
int smallIdx = 0;
while (size != 0) { // ๋ชจ๋ ํ์นํ ๋๊น์ง ๋ฐ๋ณต
if (size == 1) { // ํ๋ช
๋จ์ ๊ฒฝ์ฐ : ๋ฐ๋ก ํ์ต
answer++;
break;
}
// ๊ฐ์ฅ ๋ฌด๊ฑฐ์ด ์ฌ๋ + ๊ฐ์ฅ ๊ฐ๋ฒผ์ด ์ฌ๋ <= ๋ฌด๊ฒ ์ ํ (limit) ์ธ์ง ํ์ธ
if (people[bigIdx] + people[smallIdx] <= limit) { // ๋ ๋ค ํ๋ ๊ฒฝ์ฐ
smallIdx++;
size-=2;
}
else { // ๊ฐ์ฅ ๋ฌด๊ฑฐ์ด ์ฌ๋๋ง ํ๋ ๊ฒฝ์ฐ
size-=1;
}
bigIdx--;
answer++;
}
return answer;
}
}
/*
์กฐ๊ฑด
(1) ์ต๋ 2๋ช
(2) ๋ฌด๊ฒ ์ ํ ์กด์ฌ (limit)
(3) ์ต๋ํ ์ ๊ฒ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์ฌ๋ ๊ตฌ์ถ
ํ์ด [70, 50, 80, 50]
-> ๊ฐ์ฅ ๋ฌด๊ฑฐ์ด ์ฌ๋๊ณผ ๊ฐ์ฅ ๊ฐ๋ฒผ์ด ์ฌ๋์ด ํจ๊ป ํ ์ ์์ผ๋ฉด best ์๋๋ฉด ๊ฐ์ฅ ๋ฌด๊ฑฐ์ด ์ฌ๋ ํผ์
(1) sort : [50, 50, 70, 80]
(2)
*/
๋ฌธ์ 3๏ธโฃ (ํ๋ก๊ทธ๋๋จธ์ค_๋จ์์นด๋ฉ๋ผ)
๐ก IDEA : Car ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ Car ์ ์ข ๋ฃ ์์ ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ ์ฐจ์ ์ ๋ ฌ ๋๋๋ก PriorityQueue ๋ฅผ ์์ฑํ ๋ค Queue ๊ฐ ๋น ๋ ๊น์ง ๋ฐ๋ณต๋ฌธ์ ์ํํ๋ค. ๋จ์์นด๋ฉ๋ผ์ ์ง์ ์ ๋ฌด์กฐ๊ฑด car ๊ฐ์ฒด์ end ์ง์ ์ผ๋ก ํ๋ค. ๋ค์ ์ฐจ์ ์์์ง์ ์ด ์นด๋ฉ๋ผ์ ๋ง์ง๋ง ์ง์ ๋ณด๋ค ์ ์ด๋ผ๋ฉด ํน๋ณํ ์๋์์ด ๊ทธ๋๋ก ๋์ด๊ฐ๊ณ , ๋ง์ง๋ง ์ง์ ๋ค์ ์๋ค๋ฉด ํด๋น ์ฐจ๋์ end ๊ฐ์ ๋จ์์นด๋ฉ๋ผ์ ์๋ก์ด ์ง์ ์ผ๋ก ์ค์ ํ๋ค.
import java.util.PriorityQueue;
class Car implements Comparable<Car> {
int start;
int end;
public Car (int start, int end) {
this.start = start;
this.end = end;
}
@Override
public int compareTo(Car other) {
return this.end - other.end;
}
}
class Solution {
public int solution(int[][] routes) {
PriorityQueue<Car> pq = new PriorityQueue<>();
for (int[] route : routes) {
pq.add(new Car(route[0], route[1]));
}
// // // ์ฃผ์! : ์ด ๋ฐฉ์์ pq ์ ๋ด๊ฒจ์๋ ์์๋๋ก ๋์ค์ง ์์
// // for (Car car : pq) {
// // System.out.printf("%d / %d \n", car.start, car.end);
// // }
// // pq ์ ๋ด๊ฒจ์๋ ์์๋๋ก ์ถ๋ ฅํ๋ ๋ฐฉ๋ฒ
// while (!pq.isEmpty()) {
// Car car = pq.poll(); // pq์์ ์์๋ฅผ ์ ๊ฑฐํ๋ฉด์ ์ถ๋ ฅ
// System.out.printf("%d / %d \n", car.start, car.end);
// }
Car car = pq.poll();
// System.out.printf("%d / %d\n", car.start, car.end);
int answer = 1;
int camIdx = car.end;
// System.out.printf("%d ์ cctv ์ค์น\n", camIdx);
while (!pq.isEmpty()) {
car = pq.poll();
// System.out.printf("%d / %d\n", car.start, car.end);
if (car.start <= camIdx) continue;
answer++;
camIdx = car.end;
// System.out.printf("%d ์ cctv ์ค์น\n", camIdx);
}
return answer;
}
}
/*
- ์กฐ๊ฑด
(1) ๋จ์ ์นด๋ฉ๋ผ๋ฅผ ํ ๋ฒ์ ๋ง๋์ผํจ
(2) ์ต์ ์นด๋ฉ๋ผ ๊ฐ์
[[-20,-15], [-14,-5], [-18,-13], [-5,-3]]
A : [-20,-15]
B : [-14,-5]
C : [-18,-13]
D : [-5,-3]]
A C A* B C* D&B* D*
- ํ์ด
(1) ๋๊ฐ๋ ๊ฒ์ด ์ค์ํ๋ฏ๋ก ์ข
๋ฃ๊ฐ ๋น ๋ฅธ ์
(2) PriorityQueue ์ ๋ด๊ธฐ
(3) ์ฐจ๊ฐ ๋ชจ๋ ์ง๋๊ฐ ๋ ๊น์ง ๋ง์ง๋ง cctv ์ ์ง์ ์ ์ ์ฅํ๋ฉด์ ์งํ
-> ๋ฌด์กฐ๊ฑด ์ฐจ์ ๋งจ ๋์ cctv ์ง์ ์ผ๋ก ์ค์
-> ๋ค์ ์ฐจ์ ์์์ด cctv ์ง์ ์ ์ด๋ฉด ๋ค์ ์ฐจ๋ฅผ ํ์ธ
-> ๋ค์ ์ฐจ์ ์์์ด cctv ์ง์ ๋ค์์ด๋ฉด ํด๋น ์ฐจ๋์ ๋ง์ง๋ง์ ์๋ก์ด cctv ์ง์ ์ผ๋ก ์ค์
*/
์ฐธ๊ณ ๐ : Comparable ๊ณผ Comparator ์ ์ฐจ์ด (https://st-lab.tistory.com/243)
์๋ฐ [JAVA] - Comparable ๊ณผ Comparator์ ์ดํด
์๋ง ์ด ๊ธ์ ์ฐพ์ ์ค์ ๋ถ๋ค ๋๊ฐ๋ Comparable๊ณผ Comparator์ ์ฐจ์ด๊ฐ ๋ฌด์์ธ์ง ๋ชจ๋ฅด๊ฑฐ๋ ๊ถ๊ธํด์ ์ฐพ์์ค์ จ์ ๊ฒ์ด๋ค. ์ฌ์ค ์๊ณ ๋ณด๋ฉด ๋ ๊ฐ๋ ๊ทธ๋ ๊ฒ ์ด๋ ต์ง ์์ผ๋ ์๋ฌด๋๋ ์๋ฐ๋ฅผ ํ์ตํ๋ฉด์ ๊ฐ
st-lab.tistory.com
์ฃผ์ โ ๏ธ : PriorityQueue ์ ์์๋ฅผ ํ์ธํ๊ณ ์ถ์ ๋๋ ํฅ์๋ for ๋ฌธ์ด ์๋, poll ์ ํตํด ํ์ธํ๋ ๋ฐฉ์์ผ๋ก ์งํํด์ผํ๋ค.

'TIL ๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| TIL (2024.06.08) (1) | 2024.06.09 |
|---|---|
| TIL (2024.06.06) (0) | 2024.06.07 |
| TIL 24์ผ์ฐจ (2022.01.05) (0) | 2023.01.05 |
| TIL 23์ผ์ฐจ (2022.12.29) (0) | 2023.01.02 |
| TIL 22์ผ์ฐจ (2022.12.03) (1) | 2022.12.03 |