[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] Lv1. ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜

2023. 2. 16. 09:29ใ†์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค_2023

728x90

 

๋ฌธ์ œ ์„ค๋ช…

์ˆ˜๋งŽ์€ ๋งˆ๋ผํ†ค ์„ ์ˆ˜๋“ค์ด ๋งˆ๋ผํ†ค์— ์ฐธ์—ฌํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋‹จ ํ•œ ๋ช…์˜ ์„ ์ˆ˜๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ๋ชจ๋“  ์„ ์ˆ˜๊ฐ€ ๋งˆ๋ผํ†ค์„ ์™„์ฃผํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๋งˆ๋ผํ†ค์— ์ฐธ์—ฌํ•œ ์„ ์ˆ˜๋“ค์˜ ์ด๋ฆ„์ด ๋‹ด๊ธด ๋ฐฐ์—ด participant์™€ ์™„์ฃผํ•œ ์„ ์ˆ˜๋“ค์˜ ์ด๋ฆ„์ด ๋‹ด๊ธด ๋ฐฐ์—ด completion์ด ์ฃผ์–ด์งˆ ๋•Œ, ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜์˜ ์ด๋ฆ„์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ
  • ๋งˆ๋ผํ†ค ๊ฒฝ๊ธฐ์— ์ฐธ์—ฌํ•œ ์„ ์ˆ˜์˜ ์ˆ˜๋Š” 1๋ช… ์ด์ƒ 100,000๋ช… ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • completion์˜ ๊ธธ์ด๋Š” participant์˜ ๊ธธ์ด๋ณด๋‹ค 1 ์ž‘์Šต๋‹ˆ๋‹ค.
  • ์ฐธ๊ฐ€์ž์˜ ์ด๋ฆ„์€ 1๊ฐœ ์ด์ƒ 20๊ฐœ ์ดํ•˜์˜ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฐธ๊ฐ€์ž ์ค‘์—๋Š” ๋™๋ช…์ด์ธ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
 
์ž…์ถœ๋ ฅ ์˜ˆ
participant                                                                              completion                                                           return
["leo", "kiki", "eden"] ["eden", "kiki"] "leo"
["marina", "josipa", "nikola", "vinko", "filipa"] ["josipa", "filipa", "marina", "nikola"] "vinko"
["mislav", "stanko", "mislav", "ana"] ["stanko", "ana", "mislav"] "mislav"
์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์˜ˆ์ œ #1
"leo"๋Š” ์ฐธ์—ฌ์ž ๋ช…๋‹จ์—๋Š” ์žˆ์ง€๋งŒ, ์™„์ฃผ์ž ๋ช…๋‹จ์—๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์— ์™„์ฃผํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์ œ #2
"vinko"๋Š” ์ฐธ์—ฌ์ž ๋ช…๋‹จ์—๋Š” ์žˆ์ง€๋งŒ, ์™„์ฃผ์ž ๋ช…๋‹จ์—๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์— ์™„์ฃผํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

 

์˜ˆ์ œ #3
"mislav"๋Š” ์ฐธ์—ฌ์ž ๋ช…๋‹จ์—๋Š” ๋‘ ๋ช…์ด ์žˆ์ง€๋งŒ, ์™„์ฃผ์ž ๋ช…๋‹จ์—๋Š” ํ•œ ๋ช…๋ฐ–์— ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ•œ๋ช…์€ ์™„์ฃผํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.


โ€ป ๊ณต์ง€ - 2023๋…„ 01์›” 25์ผ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

 

 

 

๋‚˜์˜ ํ’€์ด

public String solution(String[] participant, String[] completion) {
   StringBuffer sb = new StringBuffer();
   Map<String, Integer> map = new HashMap<>();
   
   for (String s : participant)
   {
      map.put(s, map.getOrDefault(s, 0) + 1);
   }
   
   for (String s : completion)
   {
      map.put(s, map.get(s) - 1);
   }
   
   for (String s : map.keySet())
   {
      if (map.get(s) != 0) {
         sb.append(s);
      }
   }
   
   
   return sb.toString();
}

์ด๊ฑด ์˜ˆ์ „์— ํ•œ๋ฒˆ ํ’€์–ด๋ดค๋˜ ๋ฌธ์ œ์˜€๋Š”๋ฐ ๊ทธ๋•Œ ์ด ๋ฐฉ๋ฒ• ๋ง๊ณ  ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ํ’€์—ˆ์—ˆ๊ณ , getOrDefault๋ฅผ ๋ฉฐ์น ์ „์— ์‚ฌ์šฉํ•ด์„œ ํ’€์—ˆ๋˜ ๊ธฐ์–ต์ด ๋‚˜์„œ ์ด๋ฒˆ์—๋Š” map์˜ getOrDefault๋ฅผ ํ™œ์šฉํ•ด์„œ ํ•ด๋‹น ๋ฌธ์ œ๋„ ํ’€์–ด๋ดค๋‹ค. 

 

์ด ๋ฌธ์ œ์—์„œ๋Š” ๋™๋ช…์ด์ธ์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ํ•ต์‹ฌ? ์ธ๊ฒƒ ๊ฐ™๋‹ค. 

Map ์—์„œ key๋ฅผ ์ฐธ๊ฐ€์ž ์ด๋ฆ„์œผ๋กœ, ๊ทธ๋ฆฌ๊ณ  value๋ฅผ ์ฐธ๊ฐ€์ž ์ˆ˜๋กœ ํ•ด๋’€๋‹ค. 

์ด๋•Œ Map์€ ํ‚ค ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— getOrDefault๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ค‘๋ณต๋œ ํ‚ค๊ฐ€ ์—†๋‹ค๋ฉด 0, ์•„๋‹ˆ๋ฉด +1 ๋ฅผ ํ•ด์„œ value ๊ฐ’์„ ๋„ฃ์–ด์คฌ๋‹ค. 

๊ทธ๋ ‡๊ฒŒ ์ฐธ๊ฐ€์ž๋ฅผ map์— put ํ•ด์ฃผ๊ณ  ๋‚˜์„œ, 

 

์™„์ฃผ์ž ๋ช…๋‹จ์„ map๊ณผ ๋น„๊ตํ•ด์„œ -1 ํ•ด์ฃผ๊ณ ๋‚˜์„œ map์˜ value๊ฐ’์ด 1์ด์ƒ์ธ ๊ฒฝ์šฐ ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์— StringBuffer์— ์ถ”๊ฐ€ํ•ด์คฌ๋‹ค. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90