Algorithm

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค: ๋กค์ผ€์ดํฌ ์ž๋ฅด๊ธฐ(JAVA)

10Biliion 2025. 5. 29. 10:58
๋ฐ˜์‘ํ˜•

๐Ÿงฉ ๋ฌธ์ œ ์„ค๋ช…

์ฒ ์ˆ˜๋Š” ๋™์ƒ์—๊ฒŒ ๋กค์ผ€์ดํฌ์˜ ์ ˆ๋ฐ˜์„ ๊ณตํ‰ํ•˜๊ฒŒ ๋‚˜๋ˆ ์ฃผ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

  • ๋กค์ผ€์ดํฌ์—๋Š” ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ํ† ํ•‘์ด ์ˆœ์„œ๋Œ€๋กœ ๋†“์—ฌ ์žˆ๊ณ ,
  • ์ฒ ์ˆ˜๋Š” ํ† ํ•‘์ด ๋†“์ธ ์ˆœ์„œ๋Œ€๋กœ ํ•œ ์กฐ๊ฐ์”ฉ ์™ผ์ชฝ์œผ๋กœ ์ž๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด๋•Œ ์ž์‹ ๊ณผ ๋™์ƒ์ด ๊ฐ–๊ฒŒ ๋˜๋Š” ํ† ํ•‘์˜ ์ข…๋ฅ˜ ์ˆ˜๊ฐ€ ๊ฐ™์•„์ง€๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

โ—์˜ˆ์‹œ

์ž…๋ ฅ: [1, 2, 1, 3, 1, 4, 1, 2]
์ถœ๋ ฅ: 2

 


ํ’€์ด๋ฐฉ๋ฒ•

  1. ์ „์ฒด ํ† ํ•‘ ๊ฐœ์ˆ˜๋ฅผ Map์œผ๋กœ ์„ธ์–ด๋‘”๋‹ค.
  2. ์™ผ์ชฝ๋ถ€ํ„ฐ ํ•œ ์นธ์”ฉ ์ž๋ฅด๋ฉด์„œ:
    • ์™ผ์ชฝ ํ† ํ•‘ ์ข…๋ฅ˜๋Š” Set์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ ,
    • ์˜ค๋ฅธ์ชฝ ํ† ํ•‘ ์ข…๋ฅ˜๋Š” Map์—์„œ ํ•˜๋‚˜์”ฉ ๊ฐ์†Œ์‹œํ‚ค๋ฉฐ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  3. ์–‘์ชฝ์˜ ํ† ํ•‘ ์ข…๋ฅ˜ ์ˆ˜(Set.size() vs Map.size())๊ฐ€ ๊ฐ™์œผ๋ฉด answer ์ฆ๊ฐ€

JAVA ์ฝ”๋“œ

import java.util.*;

class Solution {
    public int solution(int[] topping) {
        int answer = 0;

        Map<Integer, Integer> map = new HashMap<>();
        Set<Integer> set = new HashSet<>();

        // 1. ์ „์ฒด ํ† ํ•‘์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ผ๋‹ค
        for (int i = 0; i < topping.length; i++) {
            map.put(topping[i], map.getOrDefault(topping[i], 0) + 1);
        }

        // 2. ํ•œ ์นธ์”ฉ ์ž๋ฅด๋ฉด์„œ ๋น„๊ต
        for (int i = 0; i < topping.length; i++) {
            int num = topping[i];

            set.add(num); // ์™ผ์ชฝ์— ์ถ”๊ฐ€
            map.put(num, map.get(num) - 1); // ์˜ค๋ฅธ์ชฝ์—์„œ ์ œ๊ฑฐ

            if (map.get(num) == 0) {
                map.remove(num); // ์ˆ˜๊ฐ€ 0์ด ๋˜๋ฉด ์ œ๊ฑฐ
            }

            // ์–‘์ชฝ ํ† ํ•‘ ์ข…๋ฅ˜ ์ˆ˜๊ฐ€ ๊ฐ™์œผ๋ฉด ์ •๋‹ต++
            if (set.size() == map.size()) {
                answer++;
            }
        }

        return answer;
    }
}

 

ํฌ์ธํŠธ

์˜ค๋ฅธ์ชฝ ํ† ํ•‘ ์ข…๋ฅ˜ ๊ฐœ์ˆ˜ ๊ด€๋ฆฌ -> Map
์™ผ์ชฝ ํ† ํ•‘์˜ ์ข…๋ฅ˜ ์ถ”์  ->Set
 
๐Ÿ‘‰ ์ด๋Ÿฐ ๋ฌธ์ œ์—์„œ๋Š” "์ข…๋ฅ˜ ์ˆ˜" = Set/Map size ๋ฅผ ๋– ์˜ฌ๋ฆฌ๋Š” ์Šต๊ด€์ด ์ค‘์š”.
 

์‹œ๊ฐ„๋ณต์žก๋„

O(N)
์ „์ฒด ๋ฐฐ์—ด์„ ๋‘ ๋ฒˆ ์ˆœํšŒํ•˜๋ฏ€๋กœ ์„ ํ˜• ์‹œ๊ฐ„ ๋ณต์žก๋„๋กœ ํšจ์œจ์ 

 

 

 

๋ฐ˜์‘ํ˜•