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

๋ฐฑ์ค€ 13114: List of Unique Numbers(ํŒŒ์ด์ฌ)

2025. 4. 28. 10:07ยท์•Œ๊ณ ๋ฆฌ์ฆ˜

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

1๋ถ€ํ„ฐ N๊นŒ์ง€์˜ ์ˆ˜์—ด์ด ์ฃผ์–ด์ง„๋‹ค.
์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์—ฐ์† ๋ถ€๋ถ„ ์ˆ˜์—ด(subarray)์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

  • ์ˆ˜์—ด A์˜ i๋ฒˆ์งธ ์š”์†Œ๋ถ€ํ„ฐ j๋ฒˆ์งธ ์š”์†Œ๊นŒ์ง€, ๋ชจ๋“  ์ˆ˜๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅด๋ฉด ํ•ด๋‹น ๊ตฌ๊ฐ„์„ ํ•˜๋‚˜๋กœ ์„ผ๋‹ค.
  • X ≤ Y๋ฅผ ๋งŒ์กฑํ•˜๋Š” ๋ชจ๋“  (X, Y) ์Œ์— ๋Œ€ํ•ด ๊ตฌ๊ฐ„์„ ํƒ์ƒ‰ํ•˜์—ฌ, ์ค‘๋ณต ์—†๋Š” ๊ฒฝ์šฐ๋งŒ ์„ธ์•ผ ํ•œ๋‹ค.

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

์ด ๋ฌธ์ œ๋Š” ํˆฌ ํฌ์ธํ„ฐ(two pointers) ๋˜๋Š” ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ(sliding window) ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋Œ€ํ‘œ์ ์ธ ์œ ํ˜•์ด๋‹ค.

  • ์—ฐ์†๋œ ๊ตฌ๊ฐ„ ๋‚ด์—์„œ ์ค‘๋ณต์ด ์—†๋Š” ์ตœ๋Œ€ ๋ฒ”์œ„๋ฅผ ๋น ๋ฅด๊ฒŒ ํƒ์ƒ‰ํ•ด์•ผ ํ•œ๋‹ค.
  • ๋‹จ์ˆœ ์ด์ค‘ ๋ฐ˜๋ณต๋ฌธ์„ ์“ฐ๋ฉด O(N²)์œผ๋กœ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ,
  • ํฌ์ธํ„ฐ๋ฅผ ์ด๋™์‹œํ‚ค๋ฉด์„œ ์ค‘๋ณต์„ ๊ด€๋ฆฌํ•˜์—ฌ O(N)์œผ๋กœ ์ตœ์ ํ™”ํ•ด์•ผ ํ•œ๋‹ค.

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

๐Ÿ”ด ์ „ ์ฝ”๋“œ (๋น„ํšจ์œจ์ )

import sys
input = sys.stdin.readline

N = int(input())
number_lst = list(map(int, input().split()))
count = 0
new_lst = []
flag = 0

for i in range(len(number_lst)):
    if number_lst[i] in new_lst:
        if flag == 0:
            for j in range(len(new_lst) + 1):
                count += j
                flag = 1
        else:
            for j in range(len(new_lst)):
                count += j
    else:
        new_lst.append(number_lst[i])

if flag == 0:
    for j in range(len(new_lst) + 1):
        count += j
else:
    for j in range(len(new_lst)):
        count += j

print(count)

๐ŸŸข ํ›„ ์ฝ”๋“œ (์ตœ์ ํ™”๋œ ๋ฐฉ์‹)

import sys
input = sys.stdin.readline

N = int(input())
A = list(map(int, input().split()))

last_seen = {}
ans = 0
l = 0

for r in range(N):
    x = A[r]
    if x in last_seen and last_seen[x] >= l:
        l = last_seen[x] + 1

    last_seen[x] = r
    ans += (r - l + 1)

print(ans)

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

๋‹จ๊ณ„ ์—ฐ์‚ฐ๋Ÿ‰ ๋ณต์žก๋„
์ž…๋ ฅ ์ฒ˜๋ฆฌ N๊ฐœ ์ฝ๊ธฐ O(N)
last_seen ๊ด€๋ฆฌ ์ˆซ์ž๋งˆ๋‹ค 1ํšŒ ์กฐํšŒ ๋ฐ ๊ฐฑ์‹  O(N)
ํฌ์ธํ„ฐ ์ด๋™ ๋ฐ ๋‹ต ๊ณ„์‚ฐ ๊ฐ ์š”์†Œ 1ํšŒ ์ฒ˜๋ฆฌ O(N)

์ตœ์ข… ์‹œ๊ฐ„ ๋ณต์žก๋„: O(N)


๐Ÿ“Œ ์ •๋ฆฌ

  • ์ฒ˜์Œ์—๋Š” ๋ฆฌ์ŠคํŠธ๋กœ ์ค‘๋ณต ์ฒดํฌ๋ฅผ ํ•˜์—ฌ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๋†’์•˜๋‹ค.
  • ์ดํ›„ ๋”•์…”๋„ˆ๋ฆฌ๋กœ ๋งˆ์ง€๋ง‰ ๋“ฑ์žฅ ์œ„์น˜๋ฅผ ๊ธฐ๋กํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ตœ์ ํ™”ํ•˜์˜€๋‹ค.
  • ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ๋ฅผ ํ†ตํ•ด ๊ตฌ๊ฐ„์„ ๊ด€๋ฆฌํ•˜๋ฉด ์„œ๋กœ ๋‹ค๋ฅธ ์›์†Œ๋กœ ๊ตฌ์„ฑ๋œ ๊ตฌ๊ฐ„์„ ๋น ๋ฅด๊ฒŒ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ด ๊ธฐ๋ฒ•์€ ๋ฌธ์ž์—ด, ๋ฐฐ์—ด, ํ•ด์‹œ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋‹ค์–‘ํ•œ ๋ฌธ์ œ์—๋„ ์‘์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

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

๋ฐฑ์ค€ 1043๋ฒˆ: ๊ฑฐ์ง“๋ง(java)  (1) 2025.05.07
๋ฐฑ์ค€ 2075: N๋ฒˆ์งธ ํฐ ์ˆ˜(JAVA)  (0) 2025.05.06
22251๋ฒˆ: ๋นŒ๋Ÿฐ ํ˜ธ์„(ํŒŒ์ด์ฌ)  (0) 2025.04.26
๋ฐฑ์ค€ 4179: ๋ถˆ!(ํŒŒ์ด์ฌ)  (0) 2025.04.26
๋ฐฑ์ค€ 1253: ์ข‹๋‹ค(ํŒŒ์ด์ฌ)  (0) 2025.04.25
'์•Œ๊ณ ๋ฆฌ์ฆ˜' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ๋ฐฑ์ค€ 1043๋ฒˆ: ๊ฑฐ์ง“๋ง(java)
  • ๋ฐฑ์ค€ 2075: N๋ฒˆ์งธ ํฐ ์ˆ˜(JAVA)
  • 22251๋ฒˆ: ๋นŒ๋Ÿฐ ํ˜ธ์„(ํŒŒ์ด์ฌ)
  • ๋ฐฑ์ค€ 4179: ๋ถˆ!(ํŒŒ์ด์ฌ)
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
์ƒ๋‹จ์œผ๋กœ

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