[Java] ์นด์šดํŒ… ์ •๋ ฌ (Counting Sort)

2022. 12. 27. 15:18ยทAlgorithm/BaekJoon

https://www.acmicpc.net/problem/10989

 

10989๋ฒˆ: ์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ 3

์ฒซ์งธ ์ค„์— ์ˆ˜์˜ ๊ฐœ์ˆ˜ N(1 โ‰ค N โ‰ค 10,000,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ด ์ˆ˜๋Š” 10,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.

www.acmicpc.net

 

๋ฐฑ์ค€ 10989๋ฒˆ ์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ3 ๋ฌธ์ œ๋ฅผ Collections.sort()๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ–ˆ๋”๋‹ˆ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ ์˜ค๋ฅ˜๊ฐ€ ๋–ด๋‹ค.

๊ตฌ๊ธ€๋ง์„ ํ†ตํ•ด ์•Œ์•„๋ณด์•˜๋”๋‹ˆ, Collections.sort()๋‚˜ Arrays.sort()๊ฐ™์€ ๋ฉ”์†Œ๋“œ๋Š” ํ‰๊ท  ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๐šถ(nlogn) ์ธ ๋ฐ˜๋ฉด์—

Counting sort๋Š” ํ‰๊ท  ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๐šถ(๐‘›) ์ธ ์„ฑ๋Šฅ์„ ๋ณด์—ฌ์ฃผ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ธ ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.

Arrays.sort()๋Š” ํ‰๊ท : ๐šถ(nlogn) / ์ตœ์•…: ๐šถ(n^2)
Collections.sort()๋Š” ํ‰๊ท , ์ตœ์•… : ๐šถ(nlogn) ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

 

 

๋‹จ, ์นด์šดํŒ… ์ •๋ ฌ์€ ์ •๋ ฌํ•  ๋•Œ ์ถ”๊ฐ€์ ์ธ ๋ฉ”๋ชจ๋ฆฌ(์ˆซ์ž ๊ฐœ์ˆ˜๋ฅผ ์ €์žฅํ•  ๊ณต๊ฐ„, ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•  ๊ณต๊ฐ„)๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ์ ๊ณผ, ๊ฐ€์žฅ ํฐ ์ˆซ์ž์— ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค๋Š” ์ ์€ ๋‹จ์ ์ด๋‹ค.(๋ฐฐ์—ด์•ˆ์˜ ๊ฐ€์žฅ ํฐ ์›์†Œ๊ฐ€ ์—„์ฒญ๋‚˜๊ฒŒ ํฐ ์ˆซ์ž๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ์‚ฌ์šฉํ•˜์ž!) 


๊ฐ„๋‹จํ•˜๊ฒŒ ์นด์šดํŒ… ์ •๋ ฌ์€, ๋ฐ์ดํ„ฐ์˜ ๊ฐ’์ด ๋ช‡ ๋ฒˆ ๋‚˜์™”๋Š”์ง€๋ฅผ ์„ธ์–ด์ฃผ๊ณ , ํ•ด๋‹น ๊ฐ’์„ ์ธ๋ฑ์Šค๋กœ ํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ฐฐ์—ด(counting)์˜ ๊ฐ’์„ 1 ์ฆ๊ฐ€์‹œํ‚จ๋‹ค. ๊ทธ๋ฆผ์œผ๋กœ ์˜ˆ๋ฅผ ๋“ค์–ด๋ณด๊ฒ ๋‹ค.

์ถœ์ฒ˜: https://st-lab.tistory.com/104

array[0] = 7์ด๋ฏ€๋กœ counting[7] ๊ฐ’์„ 1 ์ฆ๊ฐ€,

array[1] = 2 ์ด๋ฏ€๋กœ counting[2] ๊ฐ’์„ 1 ์ฆ๊ฐ€,

...

array[11] = 1 ์ด๋ฏ€๋กœ count[1] ๊ฐ’์„ 1 ์ฆ๊ฐ€.

์ด ๊ณผ์ •์„ ๋งˆ์น˜๋ฉด ์œ„ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ counting ๋ฐฐ์—ด์ด ์™„์„ฑ์ด๋œ๋‹ค.

 

์›๋ž˜๋ผ๋ฉด, counting ๋ฐฐ์—ด์˜ ๊ฐ ๊ฐ’์„ ๋ˆ„์ ํ•ฉ์œผ๋กœ ๋ณ€ํ™˜์‹œ์ผœ์ค˜์•ผ ํ•˜์ง€๋งŒ, 10989๋ฒˆ ๋ฐฑ์ค€๋ฌธ์ œ์™€ ๊ฐ™์ด ์ˆ˜์˜ ๋ฒ”์œ„๋ฅผ ์•Œ๊ณ  ์žˆ๊ณ  ์ž…์ถœ๋ ฅ๋งŒ ํ•˜๋Š” ๊ฒƒ์ด๋ผ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด, ๋ˆ„์  ํ•ฉ ๋ถ€๋ถ„์„ skipํ•˜๊ณ  count[i]๊ฐ’์ด 0์ด ๋  ๋•Œ๊นŒ์ง€ ์ธ๋ฑ์Šค๋ฅผ ์ถœ๋ ฅํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

for(int i = 1; i < 10001; i++) {
    while(cnt[i] > 0) {
        System.out.println(i);
        cnt[i]--;
    }
}

 

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

[๋ฐฑ์ค€] 1563๋ฒˆ: ๊ฐœ๊ทผ์ƒ(Java)  (0) 2023.07.11
[๋ฐฑ์ค€] 1920๋ฒˆ : ์ˆ˜ ์ฐพ๊ธฐ - JAVA [์ž๋ฐ”] ์ด๋ถ„ ํƒ์ƒ‰ ๋ฌธ์ œ  (0) 2021.10.25
[๋ฐฑ์ค€] 1874๋ฒˆ : ์Šคํƒ ์ˆ˜์—ด - JAVA [์ž๋ฐ”]  (0) 2021.10.25
[๋ฐฑ์ค€] 1654๋ฒˆ : ๋žœ์„  ์ž๋ฅด๊ธฐ - JAVA [์ž๋ฐ”]  (0) 2021.10.25
'Algorithm/BaekJoon' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๋ฐฑ์ค€] 1563๋ฒˆ: ๊ฐœ๊ทผ์ƒ(Java)
  • [๋ฐฑ์ค€] 1920๋ฒˆ : ์ˆ˜ ์ฐพ๊ธฐ - JAVA [์ž๋ฐ”] ์ด๋ถ„ ํƒ์ƒ‰ ๋ฌธ์ œ
  • [๋ฐฑ์ค€] 1874๋ฒˆ : ์Šคํƒ ์ˆ˜์—ด - JAVA [์ž๋ฐ”]
  • [๋ฐฑ์ค€] 1654๋ฒˆ : ๋žœ์„  ์ž๋ฅด๊ธฐ - JAVA [์ž๋ฐ”]
_๊ฑฐ๋ˆ„
_๊ฑฐ๋ˆ„
๋ธ”๋กœ๊ทธ ์ด์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค! https://velog.io/@pigonhair/posts
  • _๊ฑฐ๋ˆ„
    ๊ฑฐ๋ˆ„๋„ค๋ฃธ๐Ÿ”‘
    _๊ฑฐ๋ˆ„
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๊ฑฐ๋ˆ„๋„ค๋ฃธ (83)
      • Languages | Frameworks (41)
        • Java (10)
        • Spring (23)
        • Docker (8)
      • Git | Github (1)
      • DBMS (4)
        • SQL (4)
      • DevOps | Server (3)
      • OS (6)
        • Linux (6)
      • Algorithm (26)
        • Theory (1)
        • Data Structure (7)
        • BaekJoon (5)
        • Programmers (1)
        • KBro Study (12)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • Github
    • BaekJoon
    • solved class
    • ๋ฐฉ๋ช…๋ก
  • ์ธ๊ธฐ ๊ธ€

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

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
_๊ฑฐ๋ˆ„
[Java] ์นด์šดํŒ… ์ •๋ ฌ (Counting Sort)

๊ฐœ์ธ์ •๋ณด

  • ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ
  • ํฌ๋Ÿผ
  • ๋กœ๊ทธ์ธ
์ƒ๋‹จ์œผ๋กœ

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

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.