๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“– Algorithm/์ฝ”๋”ฉํ…Œ์ŠคํŠธ

2022.05.09 ใ€Œํ•ด์‹œ Lv.2ใ€

by GroovyArea 2022. 5. 9.
์š”์ƒˆ ๋งค์ผ๋งค์ผ ์ฝ”ํ…Œ๋ฅผ ์ค€๋น„ํ•˜๋ฉฐ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฌธ์ œ๋ฅผ ํ’€๊ณ  ์žˆ๋‹ค. ์ฒ˜์Œ์—” ์™„์ „ํžˆ ๋ง‰ํ˜”์ง€๋งŒ ๊ทธ๋ž˜๋„ ์ด์   ์–ด๋А ์ •๋„ ํ’€์ด๊ฐ€ ๋– ์˜ค๋ฅด๊ธด ํ•œ๋‹ค. ํ•œ ๊ฐ€์ง€ ์•„์‰ฌ์šด ์ ์€ ์ƒ๊ฐ๋ณด๋‹ค ํด๋ž˜์Šค๋งˆ๋‹ค ๋‹ค์–‘ํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ์ด๋ฅผ ์ž˜ ์•Œ๊ณ  ํ™œ์šฉํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์ด๋‹ค. 
์ œ์ผ ๋งŽ์ด ๋‚˜์˜ค๋Š” ์œ ํ˜•์ธ ํ•ด์‹œ ๋ฌธ์ œ๋ฅผ ๋งˆ์ฃผํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์œ„ํ•ด ํ™œ์šฉํ•  ๋ฉ”์„œ๋“œ๋ฅผ ๊ฒ€์ƒ‰ํ•ด์„œ ์ด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ์ง€๋งŒ ํ•œ๋ฒˆ ์ •๋ฆฌํ•ด๋ณผ ๋งŒํ•œ ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐ์ด ๋“ค์–ด์„œ ์ด๋ ‡๊ฒŒ ์ •๋ฆฌํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

 

๋ฌธ์ œ ์„ค๋ช…

์œ„์žฅ์ด๋ผ๋Š” ๋ฌธ์ œ์ธ๋ฐ,

์˜ท์˜ ์ข…๋ฅ˜์™€ ์˜ท์˜ ์ด๋ฆ„์œผ๋กœ ์ด๋ฃจ์–ด์ง„ 2์ฐจ์› ๋ฐฐ์—ด์„ ๊ฐ€์ง€๊ณ 

๊ทธ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ๋งค์ผ ์˜ท์„ ๋‹ค๋ฅด๊ฒŒ ์ž…์–ด์•ผ ํ•˜๊ณ ,

ํ•˜๋ฃจ์— ์˜ท 1๊ฐœ๋Š” ๋ฌด์กฐ๊ฑด ์ž…๋Š” ์กฐ๊ฑด์ด๋‹ค. ํ•ด์‹œ๋ฅผ ์ด์šฉํ•ด ํ’€๋ž€๋‹ค.

 

 

ํ’€์ด

 public int solution(String[][] clothes) {
        Map<String, Integer> map = new HashMap<>();
        int answer = 1;
        
        for (int i = 0; i < clothes.length; i++) {
            map.put(clothes[i][1], map.getOrDefault(clothes[i][1], 0) + 1);
        }
        
        for (Map.Entry<String,Integer> entry : map.entrySet()) {
            answer *= entry.getValue() + 1;
        }    
        
        return answer - 1;
    }
  1. ๋ฐฐ์—ด ๊ธธ์ด๋งŒํผ ๋ฐ˜๋ณต์„ ํ•˜๋ฉฐ map์— ์—”ํŠธ๋ฆฌ๋ฅผ ๋„ฃ์–ด์ค€๋‹ค. (ํ‚ค์— ์˜ท, ๊ฐ’์— ์ˆซ์ž)
  2. ๊ฐ’์˜ ๊ฐœ์ˆ˜๋งŒํผ ๋ฐ˜๋ณต์„ ํ•˜๋ฉฐ ์ •๋‹ต์— ๊ณฑํ•ด์ฃผ๋ฉฐ ์—ฐ์‚ฐ์„ ํ•œ๋‹ค.
  3. ์˜ท 1๊ฐœ๋Š” ๋ฌด์กฐ๊ฑด ์ž…์–ด์•ผ ํ•˜๊ธฐ์— -1์„ ํ•ด์ค€๋‹ค.

๊ตฌ๊ธ€๋ง์„ ํ•˜๋ฉฐ map ๊ด€๋ จ ๋ฉ”์„œ๋“œ๋“ค์„ ์ฐพ์•„๊ฐ€๋ฉฐ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ์ง€๋งŒ, ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋“ค์„ ํ™•์‹คํžˆ ์ •๋ฆฌํ•ด์•ผ ๋‚˜์ค‘์— ๊นŒ๋จน์ง€ ์•Š์„ ๊ฒƒ ๊ฐ™์•„ ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๊ฒ ๋‹ค.

 

getOrDefault(Object key, V DefaultValue)
๋งค๊ฐœ๋ณ€์ˆ˜ : 

key : ํ‚ค

defaultValue : ํ‚ค์— ๋งคํ•‘๋œ ๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ ๋ฐ˜ํ™˜๋˜๋Š” ๊ธฐ๋ณธ ๊ฐ’

=> ์ฐพ๋Š” key๊ฐ€ ์กด์žฌํ•˜๋ฉด ๋งคํ•‘๋œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์—†์„ ๊ฒฝ์šฐ default ๊ฐ’์ด ๋ฐ˜ํ™˜๋œ๋‹ค.

 

Map.Entry

Map ํ˜•ํƒœ์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ ์‚ฌ์šฉ

Map์„ ์ด์šฉํ•ด ๋ฐ˜๋ณตํ•˜๊ฑฐ๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค ์šฉ๋„๋กœ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ Stream ์‚ฌ์šฉ ์‹œ Map ํ˜•์‹ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

 

 

public Set<Map.Entry<K,โ€‹V>> entrySet()

ํ•ด๋‹น map์˜ key, value๋ฅผ ๊ฐ€์ง€๋Š” Set ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ด

๋ฐ˜๋ณต๋ฌธ์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ 

keyset()๋„ ์žˆ๋Š”๋ฐ ์ด๋Š” key๋งŒ ์–ป์–ด์˜ฌ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•œ๋‹ค.

๋‚ด ์ฝ”๋“œ์—์„œ๋Š” ์—”ํŠธ๋ฆฌ๋„ ํ•„์š”ํ•˜๋ฏ€๋กœ entrySet()์„ ์‚ฌ์šฉํ–ˆ๋‹ค.

 

์ฐธ์กฐ: https://hianna.tistory.com/573

 

[Java] HashMap key, value ์ „์ฒด ์ถœ๋ ฅํ•˜๊ธฐ

map.entrySet() map.keySet(), mep.get() map.keyValue() - value๋งŒ ๊ฐ€์ ธ์˜ค๊ธฐ Iterator forEach (Java 8 ์ดํ›„) 1. map.entrySet() public Set > entrySet() map.entrySet() ๋ฉ”์†Œ๋“œ๋Š” ํ•ด๋‹น map์˜ key์™€ value๋ฅผ..

hianna.tistory.com

์ฐธ์กฐ : https://wakestand.tistory.com/649

 

์ž๋ฐ” Map.Entry ์‚ฌ์šฉ๋ฐฉ๋ฒ• ์ •๋ฆฌ

์ž๋ฐ”์—์„œ Map.Entry ๋Š” Map ํ˜•ํƒœ์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์‹ค์ œ ์‚ฌ์šฉ์€ ์œ„์™€ ๊ฐ™์ด Map์„ For ๋ฌธ์—์„œ ๋Œ๋ ค์ค„ ๊ฒฝ์šฐ ์ธํ„ฐํŽ˜์ด์Šค ์šฉ๋„๋กœ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ํ˜น์€ ์ŠคํŠธ๋ฆผ(Stream) ์‚ฌ์šฉ ์‹œ Map ํ˜•์‹์˜ ๋ฐ์ด

wakestand.tistory.com

 

๋ฐ˜์‘ํ˜•