๋ฐฐ๋„ˆ ์ด๋ฏธ์ง€

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค PCCP๋ชจ์˜๊ณ ์‚ฌ#1 4๋ฒˆ๋ฌธ์ œ

2025. 5. 14. 00:50ยท์•Œ๊ณ ๋ฆฌ์ฆ˜

๐Ÿ’ก ๋ฌธ์ œ ์š”์•ฝ

  1. ํ˜ธ์ถœ๋œ ํ”„๋กœ๊ทธ๋žจ ์ค‘ ์ ์ˆ˜๊ฐ€ ๋‚ฎ์€ ๊ฒƒ๋ถ€ํ„ฐ ์‹คํ–‰
  2. ์ ์ˆ˜๊ฐ€ ๊ฐ™๋‹ค๋ฉด ๋จผ์ € ํ˜ธ์ถœ๋œ ๊ฒƒ๋ถ€ํ„ฐ ์‹คํ–‰
  3. ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ๊ทธ๋žจ์ด ์—†์œผ๋ฉด ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ํ˜ธ์ถœ ์‹œ๊ฐ„์œผ๋กœ ์ ํ”„
  4. ์‹คํ–‰ ๋„์ค‘์—๋Š” ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์ด ์™€๋„ ํ์— ๋„ฃ๊ธฐ๋งŒ ํ•˜๊ณ  ๋ฌด์‹œ
  • ๊ฐ ์ ์ˆ˜๋ณ„ ๋Œ€๊ธฐ ์‹œ๊ฐ„ ๋ˆ„์ ํ•ฉ๊ณผ ์ „์ฒด ์‹คํ–‰ ์™„๋ฃŒ ์‹œ๊ฐ„์„ ๋ฐ˜ํ™˜

๐Ÿง  ๋ฌธ์ œ ๋ฐฐ๊ฒฝ

  • OS ์Šค์ผ€์ค„๋ง, ์ด๋ฒคํŠธ ๋ฃจํ”„, ๋Œ€๊ธฐ์—ด ์ฒ˜๋ฆฌ ๋“ฑ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„ ๊ธฐ๋ฐ˜ ์ž‘์—… ์‹คํ–‰ ์‹œ๋ฎฌ๋ ˆ์ด์…˜
  • ์ ์ˆ˜๋Š” ์šฐ์„ ์ˆœ์œ„, ํ˜ธ์ถœ ์‹œ๊ฐ„์€ ์ •๋ ฌ ๊ธฐ์ค€, ์‹คํ–‰ ์‹œ๊ฐ„์€ ์ ์œ  ์‹œ๊ฐ„์œผ๋กœ ์ž‘์šฉ

๐Ÿ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๊ณ„

1๏ธโƒฃ ์ž…๋ ฅ ์ •๋ ฌ

  • ํ˜ธ์ถœ ์‹œ๊ฐ„์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ

2๏ธโƒฃ ์šฐ์„ ์ˆœ์œ„ ํ ์‚ฌ์šฉ

  • score ์˜ค๋ฆ„์ฐจ์ˆœ โ†’ ํ˜ธ์ถœ ์ˆœ ์ธ๋ฑ์Šค ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์‹คํ–‰ํ•  ์ž‘์—…์„ ๊ด€๋ฆฌ

3๏ธโƒฃ ์‹คํ–‰ ํ๋ฆ„

  • ํ˜„์žฌ ์‹œ๊ฐ„ ๊ธฐ์ค€์œผ๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ž‘์—…์„ ํ์— ์ถ”๊ฐ€
  • ํ๊ฐ€ ๋น„์–ด์žˆ์œผ๋ฉด ๋‹ค์Œ ํ˜ธ์ถœ ์‹œ๊ฐ„์œผ๋กœ ์ ํ”„
  • ํ์—์„œ ๊ฐ€์žฅ ์šฐ์„ ์ˆœ์œ„ ๋†’์€ ์ž‘์—…์„ ๊บผ๋‚ด ์‹คํ–‰
  • ์‹คํ–‰ ์‹œ๊ฐ„๋งŒํผ ํ˜„์žฌ ์‹œ๊ฐ„ ์ฆ๊ฐ€ + ๋Œ€๊ธฐ ์‹œ๊ฐ„ ๋ˆ„์ 

๐Ÿ’ป ํ•ต์‹ฌ ๊ตฌํ˜„ ์ฝ”๋“œ

Arrays.sort(program, Comparator.comparingInt(p -> p[1]));

PriorityQueue<int[]> waitQ = new PriorityQueue<>(
    Comparator.comparingInt((int[] a) -> a[0])      // ์ ์ˆ˜
              .thenComparingInt(a -> a[3])          // ํ˜ธ์ถœ ์ˆœ
);

int time = 0;
int idx = 0;

while (idx < program.length || !waitQ.isEmpty()) {
    while (idx < program.length && program[idx][1] <= time) {
        waitQ.offer(new int[]{program[idx][0], program[idx][1], program[idx][2], idx});
        idx++;
    }

    if (waitQ.isEmpty()) {
        time = program[idx][1];
        continue;
    }

    int[] cur = waitQ.poll();
    int score = cur[0];
    int calledTime = cur[1];
    int runTime = cur[2];

    answer[score] += time - calledTime;
    time += runTime;
}

โœ… ์‹œ๊ฐ„ ๋ณต์žก๋„ ๋ถ„์„

๋‹จ๊ณ„ ๋ณต์žก๋„
์ •๋ ฌ O(N log N)
ํ ์‚ฝ์ž…/์‚ญ์ œ O(log N)
์ „์ฒด ๋ฃจํ”„ O(N log N)
์ดํ•ฉ O(N log N)

๐Ÿ“Œ ์ •๋ฆฌ

  • score โ†’ ํ˜ธ์ถœ ์ˆœ ๋ณตํ•ฉ ์šฐ์„ ์ˆœ์œ„๋Š” PriorityQueue๋กœ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ ๊ฐ€๋Šฅ
  • ์‹œ๊ฐ„ ์ ํ”„ ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด ๋ถˆํ•„์š”ํ•œ ์‹œ๊ฐ„ ๋‚ญ๋น„ ์—†์ด ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๊ตฌํ˜„
  • ๊ฐ ์ ์ˆ˜๋ณ„ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ๋”ฐ๋กœ ๋ฐฐ์—ด์— ์ €์žฅํ•˜์—ฌ ๊ฒฐ๊ณผ ์ฒ˜๋ฆฌ

'์•Œ๊ณ ๋ฆฌ์ฆ˜' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

๋ฐฑ์ค€ 1167: ํŠธ๋ฆฌ์˜ ์ง€๋ฆ„(Java)  (0) 2025.05.26
๋ฐฑ์ค€ 1976: ์—ฌํ–‰ ๊ณ„ํš(Java)  (0) 2025.05.24
๋ฐฑ์ค€ 1043๋ฒˆ: ๊ฑฐ์ง“๋ง(java)  (1) 2025.05.07
๋ฐฑ์ค€ 2075: N๋ฒˆ์งธ ํฐ ์ˆ˜(JAVA)  (0) 2025.05.06
๋ฐฑ์ค€ 13114: List of Unique Numbers(ํŒŒ์ด์ฌ)  (0) 2025.04.28
'์•Œ๊ณ ๋ฆฌ์ฆ˜' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ๋ฐฑ์ค€ 1167: ํŠธ๋ฆฌ์˜ ์ง€๋ฆ„(Java)
  • ๋ฐฑ์ค€ 1976: ์—ฌํ–‰ ๊ณ„ํš(Java)
  • ๋ฐฑ์ค€ 1043๋ฒˆ: ๊ฑฐ์ง“๋ง(java)
  • ๋ฐฑ์ค€ 2075: N๋ฒˆ์งธ ํฐ ์ˆ˜(JAVA)
quokkaST
quokkaST
  • quokkaST
    stquokka
    quokkaST
    • ๊ฐœ๋ฐœ์ž (77)
      • n8n (2)
      • CS๊ณต๋ถ€ (46)
        • Java & Spring (15)
        • ์ธํ”„๋ผ (7)
        • ์šด์˜์ฒด์ œ & ์‹œ์Šคํ…œ (9)
        • ๊ธฐํƒ€ CS์ง€์‹ (7)
        • ๋„คํŠธ์›Œํฌ (6)
        • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (2)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ (16)
      • ํ”„๋กœ์ ํŠธ (8)
        • ๊ฐ์ •&๊ธˆ์œต์ฑ—๋ด‡ (8)
      • ๋ฆฌํŒฉํ† ๋ง (5)
        • horong (5)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”