๋ฌธ์ ์ค๋ช
https://school.programmers.co.kr/learn/courses/30/lessons/92341
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก์ Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
์ฃผ์ฐจ์ฅ์ ์๊ธํ์ ์ฐจ๋์ด ๋ค์ด์ค๊ณ (์ ์ฐจ) ๋๊ฐ(์ถ์ฐจ) ๊ธฐ๋ก์ด ์ฃผ์ด์ก์ ๋, ์ฐจ๋๋ณ๋ก ์ฃผ์ฐจ ์๊ธ์ ๊ณ์ฐํ๋ ค๊ณ ํฉ๋๋ค. ์๋๋ ํ๋์ ์์๋ฅผ ๋ํ๋ ๋๋ค.
- ์๊ธํ
| ๊ธฐ๋ณธ ์๊ฐ(๋ถ) | ๊ธฐ๋ณธ ์๊ธ(์) | ๋จ์ ์๊ฐ(๋ถ) | ๋จ์ ์๊ธ(์) |
| 180 | 5000 | 10 | 600 |
- ์ /์ถ์ฐจ ๊ธฐ๋ก
| ์๊ฐ(์:๋ถ) | ์ฐจ๋ ๋ฒํธ | ๋ด์ญ |
| 05:34 | 5961 | ์ ์ฐจ |
| 06:00 | 0000 | ์ ์ฐจ |
| 06:34 | 0000 | ์ถ์ฐจ |
| 07:59 | 5961 | ์ถ์ฐจ |
| 07:59 | 0148 | ์ ์ฐจ |
| 18:59 | 0000 | ์ ์ฐจ |
| 19:09 | 0148 | ์ถ์ฐจ |
| 22:59 | 5961 | ์ ์ฐจ |
| 23:00 | 5961 | ์ถ์ฐจ |
- ์๋์ฐจ๋ณ ์ฃผ์ฐจ ์๊ธ
| ์ฐจ๋ ๋ฒํธ | ๋์ ์ฃผ์ฐจ ์๊ฐ(๋ถ) | ์ฃผ์ฐจ ์๊ธ(์) |
| 0000 | 34 + 300 = 334 | 5000 + ⌈(334 - 180) / 10⌉ x 600 = 14600 |
| 0148 | 670 | 5000 + ⌈(670 - 180) / 10⌉ x 600 = 34400 |
| 5961 | 145 + 1 = 146 | 5000 |
- ์ด๋ค ์ฐจ๋์ด ์
์ฐจ๋ ํ์ ์ถ์ฐจ๋ ๋ด์ญ์ด ์๋ค๋ฉด, 23:59์ ์ถ์ฐจ๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผํฉ๋๋ค.
- 0000๋ฒ ์ฐจ๋์ 18:59์ ์ ์ฐจ๋ ์ดํ, ์ถ์ฐจ๋ ๋ด์ญ์ด ์์ต๋๋ค. ๋ฐ๋ผ์, 23:59์ ์ถ์ฐจ๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผํฉ๋๋ค.
- 00:00๋ถํฐ 23:59๊น์ง์ ์ /์ถ์ฐจ ๋ด์ญ์ ๋ฐํ์ผ๋ก ์ฐจ๋๋ณ ๋์ ์ฃผ์ฐจ ์๊ฐ์ ๊ณ์ฐํ์ฌ ์๊ธ์ ์ผ๊ด๋ก ์ ์ฐํฉ๋๋ค.
- ๋์ ์ฃผ์ฐจ ์๊ฐ์ด ๊ธฐ๋ณธ ์๊ฐ์ดํ๋ผ๋ฉด, ๊ธฐ๋ณธ์๊ธ์ ์ฒญ๊ตฌํฉ๋๋ค.
- ๋์ ์ฃผ์ฐจ ์๊ฐ์ด ๊ธฐ๋ณธ ์๊ฐ์ ์ด๊ณผํ๋ฉด, ๊ธฐ๋ณธ ์๊ธ์ ๋ํด์, ์ด๊ณผํ ์๊ฐ์ ๋ํด์ ๋จ์ ์๊ฐ๋ง๋ค๋จ์ ์๊ธ์ ์ฒญ๊ตฌํฉ๋๋ค.
- ์ด๊ณผํ ์๊ฐ์ด ๋จ์ ์๊ฐ์ผ๋ก ๋๋์ด ๋จ์ด์ง์ง ์์ผ๋ฉด, ์ฌ๋ฆผ ํฉ๋๋ค.
- ⌈a⌉ : a๋ณด๋ค ์์ง ์์ ์ต์์ ์ ์๋ฅผ ์๋ฏธํฉ๋๋ค. ์ฆ, ์ฌ๋ฆผ์ ์๋ฏธํฉ๋๋ค.
์ฃผ์ฐจ ์๊ธ์ ๋ํ๋ด๋ ์ ์ ๋ฐฐ์ด fees, ์๋์ฐจ์ ์ /์ถ์ฐจ ๋ด์ญ์ ๋ํ๋ด๋ ๋ฌธ์์ด ๋ฐฐ์ด records๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ์ฐจ๋ ๋ฒํธ๊ฐ ์์ ์๋์ฐจ๋ถํฐ ์ฒญ๊ตฌํ ์ฃผ์ฐจ ์๊ธ์ ์ฐจ๋ก๋๋ก ์ ์ ๋ฐฐ์ด์ ๋ด์์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
์ ํ ์ฌํญ
- fees์ ๊ธธ์ด = 4
- fees[0] = ๊ธฐ๋ณธ ์๊ฐ(๋ถ)
- 1 ≤ fees[0] ≤ 1,439
- fees[1] = ๊ธฐ๋ณธ์๊ธ(์)
- 0 ≤ fees[1] ≤ 100,000
- fees[2] = ๋จ์ ์๊ฐ(๋ถ)
- 1 ≤ fees[2] ≤ 1,439
- fees[3] = ๋จ์ ์๊ธ(์)
- 1 ≤ fees[3] ≤ 10,000
- 1 ≤ records์ ๊ธธ์ด ≤ 1,000
- records์ ๊ฐ ์์๋ "์๊ฐ ์ฐจ๋๋ฒํธ ๋ด์ญ" ํ์์ ๋ฌธ์์ด์ ๋๋ค.
- ์๊ฐ, ์ฐจ๋๋ฒํธ, ๋ด์ญ์ ํ๋์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋์ด ์์ต๋๋ค.
- ์๊ฐ์ ์ฐจ๋์ด ์
์ฐจ๋๊ฑฐ๋ ์ถ์ฐจ๋ ์๊ฐ์ ๋ํ๋ด๋ฉฐ, HH:MM ํ์์ ๊ธธ์ด 5์ธ ๋ฌธ์์ด์
๋๋ค.
- HH:MM์ 00:00๋ถํฐ 23:59๊น์ง ์ฃผ์ด์ง๋๋ค.
- ์๋ชป๋ ์๊ฐ("25:22", "09:65" ๋ฑ)์ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง์ง ์์ต๋๋ค.
- ์ฐจ๋๋ฒํธ๋ ์๋์ฐจ๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํ, `0'~'9'๋ก ๊ตฌ์ฑ๋ ๊ธธ์ด 4์ธ ๋ฌธ์์ด์ ๋๋ค.
- ๋ด์ญ์ ๊ธธ์ด 2 ๋๋ 3์ธ ๋ฌธ์์ด๋ก, IN ๋๋ OUT์ ๋๋ค. IN์ ์ ์ฐจ๋ฅผ, OUT์ ์ถ์ฐจ๋ฅผ ์๋ฏธํฉ๋๋ค.
- records์ ์์๋ค์ ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋์ด ์ฃผ์ด์ง๋๋ค.
- records๋ ํ๋ฃจ ๋์์ ์ /์ถ์ฐจ๋ ๊ธฐ๋ก๋ง ๋ด๊ณ ์์ผ๋ฉฐ, ์ ์ฐจ๋ ์ฐจ๋์ด ๋ค์๋ ์ถ์ฐจ๋๋ ๊ฒฝ์ฐ๋ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง์ง ์์ต๋๋ค.
- ๊ฐ์ ์๊ฐ์, ๊ฐ์ ์ฐจ๋๋ฒํธ์ ๋ด์ญ์ด 2๋ฒ ์ด์ ๋ํ๋ด์ง ์์ต๋๋ค.
- ๋ง์ง๋ง ์๊ฐ(23:59)์ ์ ์ฐจ๋๋ ๊ฒฝ์ฐ๋ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง์ง ์์ต๋๋ค.
- ์๋์ ์๋ฅผ ํฌํจํ์ฌ, ์๋ชป๋ ์
๋ ฅ์ ์ฃผ์ด์ง์ง ์์ต๋๋ค.
- ์ฃผ์ฐจ์ฅ์ ์๋ ์ฐจ๋์ด ์ถ์ฐจ๋๋ ๊ฒฝ์ฐ
- ์ฃผ์ฐจ์ฅ์ ์ด๋ฏธ ์๋ ์ฐจ๋(์ฐจ๋๋ฒํธ๊ฐ ๊ฐ์ ์ฐจ๋)์ด ๋ค์ ์ ์ฐจ๋๋ ๊ฒฝ์ฐ
์ ์ถ๋ ฅ ์
| fees | records | result |
| [180, 5000, 10, 600] | ["05:34 5961 IN", "06:00 0000 IN", "06:34 0000 OUT", "07:59 5961 OUT", "07:59 0148 IN", "18:59 0000 IN", "19:09 0148 OUT", "22:59 5961 IN", "23:00 5961 OUT"] | [14600, 34400, 5000] |
| [120, 0, 60, 591] | ["16:00 3961 IN","16:00 0202 IN","18:00 3961 OUT","18:00 0202 OUT","23:58 3961 IN"] | [0, 591] |
| [1, 461, 1, 10] | ["00:00 1234 IN"] | [14841] |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
- ๋ฌธ์ ์์์ ๊ฐ์ต๋๋ค.
์ ์ถ๋ ฅ ์ #2
- ์๊ธํ
| ๊ธฐ๋ณธ ์๊ฐ(๋ถ) | ๊ธฐ๋ณธ ์๊ธ(์) | ๋จ์ ์๊ฐ(๋ถ) | ๋จ์ ์๊ธ(์) |
| 120 | 0 | 60 | 591 |
- ์ /์ถ์ฐจ ๊ธฐ๋ก
| ์๊ฐ(์:๋ถ) | ์ฐจ๋ ๋ฒํธ | ๋ด์ญ |
| 16:00 | 3961 | ์ ์ฐจ |
| 16:00 | 0202 | ์ ์ฐจ |
| 18:00 | 3961 | ์ถ์ฐจ |
| 18:00 | 0202 | ์ถ์ฐจ |
| 23:58 | 3961 | ์ ์ฐจ |
- ์๋์ฐจ๋ณ ์ฃผ์ฐจ ์๊ธ
| ์ฐจ๋ ๋ฒํธ | ๋์ ์ฃผ์ฐจ ์๊ฐ(๋ถ) | ์ฃผ์ฐจ ์๊ธ(์) |
| 0202 | 120 | 0 |
| 3961 | 120 + 1 = 121 | 0 +⌈(121 - 120) / 60⌉x 591 = 591 |
- 3961๋ฒ ์ฐจ๋์ 2๋ฒ์งธ ์ ์ฐจ๋ ํ์๋ ์ถ์ฐจ๋ ๋ด์ญ์ด ์์ผ๋ฏ๋ก, 23:59์ ์ถ์ฐจ๋์๋ค๊ณ ๊ฐ์ฃผํฉ๋๋ค.
์ ์ถ๋ ฅ ์ #3
- ์๊ธํ
| ๊ธฐ๋ณธ ์๊ฐ(๋ถ) | ๊ธฐ๋ณธ ์๊ธ(์) | ๋จ์ ์๊ฐ(๋ถ) | ๋จ์ ์๊ธ(์) |
| 1 | 461 | 1 | 10 |
- ์ /์ถ์ฐจ ๊ธฐ๋ก
| ์๊ฐ(์:๋ถ) | ์ฐจ๋ ๋ฒํธ | ๋ด์ญ |
| 00:00 | 1234 | ์ ์ฐจ |
- ์๋์ฐจ๋ณ ์ฃผ์ฐจ ์๊ธ
| ์ฐจ๋ ๋ฒํธ | ๋์ ์ฃผ์ฐจ ์๊ฐ(๋ถ) | ์ฃผ์ฐจ ์๊ธ(์) |
| 1234 | 1439 | 461 +⌈(1439 - 1) / 1⌉x 10 = 14841 |
- 1234๋ฒ ์ฐจ๋์ ์ถ์ฐจ ๋ด์ญ์ด ์์ผ๋ฏ๋ก, 23:59์ ์ถ์ฐจ๋์๋ค๊ณ ๊ฐ์ฃผํฉ๋๋ค.
๋ด๊ฐ ์์ฑํ ์ฝ๋
import java.util.*;
class Solution {
public int[] solution(int[] fees, String[] records) {
// ์ฐจ๋ ์
์ฐจ ์๊ฐ์ ์ ์ฅํ๋ Map (ํ์ฌ ์ฃผ์ฐจ ์ค์ธ ์ฐจ๋)
Map<String, Integer> inMap = new HashMap<>();
// ์ฐจ๋๋ณ ๋์ ์ฃผ์ฐจ ์๊ฐ์ ์ ์ฅํ๋ Map
Map<String, Integer> accMap = new HashMap<>();
// ์ฃผ์ฐจ ๊ธฐ๋ก ์ํ
for (String record : records) {
// ๊ณต๋ฐฑ ๊ธฐ์ค์ผ๋ก ์๊ฐ, ์ฐจ๋๋ฒํธ, ์
/์ถ์ฐจ ์ํ ๋ถ๋ฆฌ
String[] s = record.split("\\s+");
// ์๊ฐ์ "๋ถ" ๋จ์๋ก ๋ณํ
int m = toMinutes(s[0]);
String car = s[1];
String io = s[2];
// ์
์ฐจ(IN)์ธ ๊ฒฝ์ฐ -> ์
์ฐจ ์๊ฐ ๊ธฐ๋ก
if (io.equals("IN")) {
inMap.put(car, m);
// ์ถ์ฐจ(OUT)์ธ ๊ฒฝ์ฐ -> ๋์ ์ฃผ์ฐจ ์๊ฐ ๊ณ์ฐ ํ ์ ๊ฑฐ
} else {
// Map์์ ์ ๊ฑฐํ๋ฉด์ ์
์ฐจ ์๊ฐ ๋ณํ
int min = inMap.remove(car);
// (์ถ์ฐจ ์๊ฐ - ์
์ฐจ ์๊ฐ)์ ๋์ ์ฃผ์ฐจ ์๊ฐ์ ๋ํจ
accMap.put(car, accMap.getOrDefault(car, 0) + (m - min));
}
}
// ์ถ์ฐจํ์ง ์์ ์ฐจ๋ ์ฒ๋ฆฌ (23:59 ๊ธฐ์ค์ผ๋ก ์ ์ฐ)
for (Map.Entry<String, Integer> e : inMap.entrySet()) {
String car = e.getKey();
int in = e.getValue();
// 23:59(=1439๋ถ)๊น์ง ์ฃผ์ฐจํ ๊ฒ์ผ๋ก ๊ณ์ฐ
accMap.put(car, accMap.getOrDefault(car, 0) + (1439 - in));
}
// ์ฐจ๋ ๋ฒํธ ๊ธฐ์ค ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
List<String> cars = new ArrayList<>(accMap.keySet());
Collections.sort(cars);
int[] answer = new int[cars.size()];
// ๊ฐ ์ฐจ๋๋ณ ์ต์ข
์๊ธ ๊ณ์ฐ
for (int i = 0; i < cars.size(); i++) {
// ์ด ์ฃผ์ฐจ ์๊ฐ(๋ถ)
int minutes = accMap.get(cars.get(i));
// ๊ธฐ๋ณธ ์๊ฐ ์ดํ๋ผ๋ฉด ๊ธฐ๋ณธ ์๊ธ๋ง ๋ถ๊ณผ
if (minutes <= fees[0]) {
answer[i] = fees[1];
continue;
}
// ์ด๊ณผํ ์๊ฐ ๊ณ์ฐ
int extra = minutes - fees[0];
// ๋จ์ ์๊ฐ
int unitT = fees[2];
// ๋จ์ ์๊ธ
int unitC = fees[3];
// ์ถ๊ฐ ๋จ์ ๊ณ์ฐ
// ex) ๋จ์์๊ฐ 10๋ถ, ์ด๊ณผ์๊ฐ 11๋ถ -> (11 + 10 - 1) / 10 = 2๋จ์
int units = (extra + unitT - 1) / unitT;
// ์ด ์๊ธ = ๊ธฐ๋ณธ ์๊ธ + (๋จ์ ์๊ธ * ๋จ์์)
int total = fees[1] + units * unitC;
answer[i] = total;
}
// ์ฐจ๋๋ฒํธ ์ค๋ฆ์ฐจ์์ผ๋ก ๊ณ์ฐ๋ ์๊ธ ๋ฐฐ์ด ๋ฐํ
return answer;
}
// "HH:MM" ํํ์ ์๊ฐ์ "๋ถ" ๋จ์๋ก ๋ณํํ๋ ๋ฉ์๋
private int toMinutes(String time) {
String[] t = time.split(":");
int hour = Integer.parseInt(t[0]);
int minute = Integer.parseInt(t[1]);
return hour * 60 + minute;
}
}
๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด ์๊ฐํ ๋ฐฉํฅ
์ฒ์ ๋ฌธ์ ๋ฅผ ๋ดค์ ๋, ์ฐจ๋์ ์ ์ถ์ฐจ ๊ธฐ๋ก์ ๋ถ์ํ์ฌ ๊ฐ ์ฐจ๋๋ณ๋ก ์ต์ข ์ฃผ์ฐจ ์๊ธ์ ๊ณ์ฐํด์ผ ํ๋ ๋ฌธ์ ์์ ํ์ ํ๋ค. ๋จ์ํ ์ ์ฐจ(IN)์ ์ถ์ฐจ(OUT)๋ง ๊ตฌ๋ถํ๋ ๊ฒ์ด ์๋๋ผ, ์ถ์ฐจ ๊ธฐ๋ก์ด ์๋ ์ฐจ๋์ ๊ฒฝ์ฐ 23:59๊น์ง ์ฃผ์ฐจํ๋ค๊ณ ๊ฐ์ฃผํด์ผ ํ๋ฉฐ, ๋์ ๋ ์ฃผ์ฐจ ์๊ฐ์ ๋ฐ๋ผ ์๊ธ์ ๊ณ์ฐํ๋ ๊ฒ์ด ํต์ฌ์ด์๋ค.
์กฐ๊ฑด์ ๋ถ์ํด ๋ณด๋ฉด, ๊ฐ ๊ธฐ๋ก์ "์๊ฐ ์ฐจ๋๋ฒํธ IN/OUT" ํ์์ผ๋ก ์ฃผ์ด์ง๋ฉฐ, ๋์ผํ ์ฐจ๋์ด ์ฌ๋ฌ ๋ฒ ์ ์ถ์ฐจํ ์ ์๋ค. ๋ฐ๋ผ์ ํ ๋ฒ์ ์ ์ถ์ฐจ๋ง์ผ๋ก ๊ณ์ฐํ ์ ์๊ณ , ์ฐจ๋๋ณ๋ก ๋์ ์ฃผ์ฐจ ์๊ฐ์ ์ ์ฅํด์ผ ํ๋ค. ๋ํ ์ต์ข ์๊ธ ๊ณ์ฐ ์์๋ ๊ธฐ๋ณธ์๊ธ, ๋จ์ ์๊ฐ, ๋จ์ ์๊ธ์ ๊ธฐ์ค์ผ๋ก ์ด๊ณผ ์๊ฐ์ ์ฌ๋ฆผ(Math.ceil) ์ฒ๋ฆฌํด์ผ ํ๋ค๋ ์ ๋ ์ฃผ์ํด์ผ ํ๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด, ๊ฐ ์ฐจ๋์ ์ ์ฐจ ์๊ฐ์ ์ ์ฅํ๋ Map<String, Integer>(inMap)๊ณผ ์ฐจ๋๋ณ ๋์ ์ฃผ์ฐจ ์๊ฐ์ ์ ์ฅํ๋ Map<String, Integer>(accMap)์ ์ฌ์ฉํ๊ธฐ๋ก ํ๋ค. inMap์๋ ํ์ฌ ์ฃผ์ฐจ ์ค์ธ ์ฐจ๋์ ์ ์ฐจ ์๊ฐ์ ์ ์ฅํ๊ณ , ์ถ์ฐจ ์์ ์ด ์ค๋ฉด remove()๋ฅผ ์ด์ฉํด ์ ์ฐจ ์๊ฐ์ ๊บผ๋ด๊ณ ๋์ ์ฃผ์ฐจ ์๊ฐ(accMap)์ ๋ํ๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ ์ถ์ฐจ๋ฅผ ๊น๋ํ๊ฒ ์ฒ๋ฆฌํ ์ ์์๊ณ , ์ถ์ฐจํ์ง ์์ ์ฐจ๋์ ๋ฐ๋ณต๋ฌธ์ ๋๋ฉฐ 23:59(=1439๋ถ)๊น์ง์ ์๊ฐ์ ๋ํด ์ต์ข ๋์ ์๊ฐ์ ์์ฑํ๋ค.
์๊ฐ ๊ณ์ฐ์ “HH:MM” ํํ๋ฅผ ๋ถ ๋จ์๋ก ๋ณํํ๋ toMinutes() ๋ฉ์๋๋ฅผ ๋ณ๋๋ก ๋ง๋ค์ด ์ฒ๋ฆฌํ๋ค. ์ด ๋๋ถ์ ์๊ฐ ๊ณ์ฐ์ด ๋จ์ํด์ก๊ณ , ์ถ์ฐจ ์๊ฐ์์ ์ ์ฐจ ์๊ฐ์ ๋บ ๋ ์ง๊ด์ ์ผ๋ก ์ดํดํ ์ ์์๋ค. ์ดํ ์ฐจ๋ ๋ฒํธ๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํด ๊ฒฐ๊ณผ ๋ฐฐ์ด์ ๋ด์์ผ๋ฉฐ, ์๊ธ ๊ณ์ฐ ์์๋ ๊ธฐ๋ณธ ์๊ฐ์ ์ด๊ณผํ ๋ถ๋ถ์ ๋ํด (์ด๊ณผ์๊ฐ + ๋จ์์๊ฐ - 1) / ๋จ์์๊ฐ ๊ณต์์ ํ์ฉํด ์ ์ ์ฐ์ฐ์ผ๋ก ์ฌ๋ฆผ ๊ณ์ฐ์ ์ํํ๋ค.
์ ์ฒด์ ์ผ๋ก ์ด ๋ฌธ์ ๋ ๋ฌธ์์ด ํ์ฑ, ํด์๋งต์ ์ด์ฉํ ๋์ ๊ด๋ฆฌ, ์ฌ๋ฆผ ๊ณ์ฐ์ด๋ผ๋ ์ธ ๊ฐ์ง ์์๊ฐ ํต์ฌ์ด์๋ค. ์๊ฐ๋ณต์ก๋๋ O(N log N)์ผ๋ก, N์ records์ ๊ธธ์ด์ด๋ฉฐ, ์ฐจ๋ ๋ฒํธ ์ ๋ ฌ ๋จ๊ณ์์ log N์ด ์ถ๊ฐ๋๋ค. ๊ฐ ์ฐจ๋์ ์ ์ถ์ฐจ ๊ธฐ๋ก์ ๋งต์์ ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ํ์๊ณผ ๊ฐฑ์ ์ ๋ชจ๋ ํ๊ท ์ ์ผ๋ก O(1)์ ๊ฐ๊น์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌ๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก, ์ด ๋ฌธ์ ๋ ๋จ์ํ ์๋ฎฌ๋ ์ด์
๋ฌธ์ ์ด์ง๋ง “์ถ์ฐจ ๋๋ฝ ์ฐจ๋ ์ฒ๋ฆฌ”์ “์๊ธ ์ฌ๋ฆผ ๊ณ์ฐ” ๋ถ๋ถ์์ ์ธ๋ฐํ ๊ตฌํ์ด ํ์ํ ๋ฌธ์ ์๋ค.
์ด ๊ณผ์ ์ ํตํด ๋ฌธ์์ด ํ์ฑ๊ณผ Map ์๋ฃ๊ตฌ์กฐ๋ฅผ ํ์ฉํ ๋์ ๊ณ์ฐ์ ์ค์์ฑ์ ๋ค์ ํ๋ฒ ๋๋ ์ ์์๋ค.
'๐ฆ ํ๋ก๊ทธ๋๋จธ์ค > ๐๏ธ ์๊ณ ๋ฆฌ์ฆ ํ์ด(Java)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [ํ๋ก๊ทธ๋๋จธ์ค/Java] ์ซ์ ๋ณํํ๊ธฐ (0) | 2025.10.22 |
|---|---|
| [ํ๋ก๊ทธ๋๋จธ์ค/Java] ๋์ถฉ ๋ง๋ ์ํ (0) | 2025.10.20 |
| [ํ๋ก๊ทธ๋๋จธ์ค/Java] ํ๋ฐฐ์์ (0) | 2025.10.16 |
| [ํ๋ก๊ทธ๋๋จธ์ค/Java] ๋ ๋ฐ๋จน๊ธฐ (0) | 2025.10.13 |
| [ํ๋ก๊ทธ๋๋จธ์ค/Java] ๋คํธ ๊ฒ์ (0) | 2025.10.02 |