๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉํ…Œ์ŠคํŠธ

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

by JulesJ 2021. 9. 6.
728x90

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต 

- ํ•ด์‹œ -

์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜

Level 1

 

 

1. ๋ฌธ์ œ

 ๋ฌธ์ œ ์„ค๋ช…


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

 

์ œํ•œ์‚ฌํ•ญ
  • ๋งˆ๋ผํ†ค ๊ฒฝ๊ธฐ์— ์ฐธ์—ฌํ•œ ์„ ์ˆ˜์˜ ์ˆ˜๋Š” 1๋ช… ์ด์ƒ 100,000๋ช… ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • completion์˜ ๊ธธ์ด๋Š” participant์˜ ๊ธธ์ด๋ณด๋‹ค 1 ์ž‘์Šต๋‹ˆ๋‹ค.
  • ์ฐธ๊ฐ€์ž์˜ ์ด๋ฆ„์€ 1๊ฐœ ์ด์ƒ 20๊ฐœ ์ดํ•˜์˜ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฐธ๊ฐ€์ž ์ค‘์—๋Š” ๋™๋ช…์ด์ธ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

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

 

 

 

2. ํ’€์ด

ํ•ด์‹œ ์—ฐ์Šต๋ฌธ์ œ๋ผ HashMap๊ณผ HashMap์˜ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ํ’€์–ด๋ณด์•˜๋‹ค.

 

import java.util.HashMap;

class Solution {
    public String solution(String[] participant, String[] completion) {
		String answer = "";

		HashMap<String, Integer> player = new HashMap<>();
		for (String p : participant)
			player.put(p, player.getOrDefault(p, 0) + 1);
		for (String p : completion)
			player.put(p, player.get(p) - 1);

		for (String key : player.keySet()) {
			if (player.get(key) != 0) {
				answer = key;
			}
		}
		return answer;
	}
}

 

 

์ฝ”๋“œ ๊ฐ„๋‹จ ์„ค๋ช…

 

HashMap๋Š” Key์™€ Value ๊ฐ’์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ํ˜•ํƒœ์ด๋‹ค. HashMap ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋ฌธ์ œ๋ผ HashMap์„ ์ด์šฉํ•œ๋‹ค.

(๋ฐฐ์—ด๋กœ ํ’€๋ฉด ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ํ’€๋ฆฌ๊ธฐ๋„ ํ•œ๋‹ค..)

 

completion์—๋Š” ์—†๋Š” participant๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด ์ด ๋ฌธ์ œ์˜ ๋ชฉํ‘œ์ด๋‹ค.

์ฃผ์˜ํ•  ์ ์€ ๋™๋ช…์ด์ธ๊ณผ, ๋งˆ์ง€๋ง‰ ์‚ฌ๋žŒ์ด ์™„์ฃผ๋ฅผ ๋ชปํ–ˆ์„ ๊ฒฝ์šฐ์ด๋‹ค.

 

participant์™€ completion (์ฐธ๊ฐ€์ž์™€ ์™„์ฃผ์ž)๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.

HashMap์— Participant๋ฅผ ์ „๋ถ€ ์ถ”๊ฐ€ํ•œ๋‹ค. ์ด๋ฆ„๊ณผ ์ธ์›์ˆ˜๋ฅผ ๊ฐ๊ฐ key-value๋กœ ๊ฐ–๋Š” ํ˜•์‹์œผ๋กœ ์ €์žฅํ•œ๋‹ค.

(HashMap<String, Integer>์œผ๋กœ ์„ ์–ธํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— key๊ฐ€ String ํƒ€์ž…, value๊ฐ€ Integerํƒ€์ž…์ด๋‹ค.)

 

HashMap.getOrDefault('string', 0) : 'string'์ด๋ผ๋Š” Key์— ํ•ด๋‹นํ•˜๋Š” Value๊ฐ€ ์žˆ์œผ๋ฉด ๊ฐ€์ ธ์˜ค๊ณ ,
์•„๋‹ ๊ฒฝ์šฐ 0์„ Default๋กœ ์ง€์ •ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ์˜ ํ•จ์ˆ˜
(์—ฌ๊ธฐ์„œ๋Š” ์˜ˆ๋ฅผ ๋“ค์–ด ๋™๋ช…์ด์ธ์ด ์žˆ์–ด์„œ ์ด๋ฏธ string์ด๋ผ๋Š” key๊ฐ€ ์žˆ๋‹ค๋ฉด, ์ด key๊ฐ’์˜ value(์ด๋ฏธ ์ €์žฅ๋˜์–ด ์žˆ๋˜ 1)๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  +1์„ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ํ˜•ํƒœ(1+1 => 2)๋กœ ์ด์šฉ๋˜๋Š” ๊ฒƒ์ด๋‹ค.) 

 

Participant ๋ฐฐ์—ด ๋งŒํผ ๋ฐ˜๋ณตํ•˜๋ฉฐ Participant player๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉฐ, 

HashMap.getOrDefault ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ, key์—๋Š” player๊ฐ€, value๋Š” +1๋กœ ์ €์žฅ๋œ๋‹ค.

value๋ฅผ ๋‹จ์ˆœํžˆ 1์ด ์•„๋‹ˆ๊ณ  countํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ์ด์œ ๋Š” ๋™๋ช…์ด์ธ ๋•Œ๋ฌธ์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, Max ๋ผ๋Š” ๋™๋ช…์ด์ธ์ด ๋‘˜์ผ ๊ฒฝ์šฐ ๋ฐ˜๋ณต๋ฌธ์ด ์ข…๋ฃŒ๋œ ํ›„ HashMap ๋‚ด์˜ Max๋ผ๋Š” ํ‚ค๊ฐ’์˜ value๋Š” 2๋กœ ์ €์žฅ๋˜์–ด ์žˆ์„ ๊ฒƒ์ด๋‹ค.

 

completion ๋ฐฐ์—ด ๋งŒํผ ๋ฐ˜๋ณตํ•˜๋ฉฐ ์™„์ฃผ์ž๋ฅผ ์ฐพ๋Š”๋‹ค.

๊ฐ ์„ ์ˆ˜๋“ค์˜ ์ด๋ฆ„์ด key์ด๊ณ , ๊ทธ ์ด๋ฆ„์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ์ด ๋ช‡ ๋ช…์ธ์ง€ value๋กœ ์ €์žฅํ•œ HashMap์—์„œ ์™„์ฃผ์ž๋“ค์„ ์ œ์™ธ์‹œํ‚ค๊ณ  ๋‚จ์€ ํ•œ ๋ช…์„ ์ฐพ๋Š”๋‹ค. ์™„์ฃผ์ž ๋ฐฐ์—ด์˜ ์ด๋ฆ„์„ ์ฐพ์•„์„œ key๊ฐ€ ์žˆ๋‹ค๋ฉด value๋ฅผ -1์„ ํ•œ๋‹ค.

 

HashMap์—์„œ key๊ฐ’์„ ๋Œ๋ฉฐ value ๊ฐ’์ด ์ตœ์ข…์ ์œผ๋กœ 0์ด ์•„๋‹ˆ๋ผ๋ฉด,

๊ทธ ์ด๋ฆ„์€ ์™„์ฃผ์ž์— ์—†๋Š” player๋ž€ ๋œป์œผ๋กœ, ๊ทธ ์ด๋ฆ„์„ answer์— ๋Œ€์ž…ํ•˜๊ณ  return ํ•œ๋‹ค.

 

 

 

๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜๊ณ  ๋‹ค์‹œ ํ’€์–ด๋ณด๋‹ˆ ๋Š๋‚Œ์ด ๋‹ค๋ฅด๋‹ค..

HashMap ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ๊ธฐ๋ณธ ํ•จ์ˆ˜๋“ค์„ ๋‹ค์‹œ ์ •๋ฆฌํ•ด๋ด์•ผ๊ฒ ๋‹ค.

 

๋๐Ÿง

 

 


 

References

- https://coding-grandpa.tistory.com/entry/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%99%84%EC%A3%BC%ED%95%98%EC%A7%80-%EB%AA%BB%ED%95%9C-%EC%84%A0%EC%88%98-%ED%95%B4%EC%8B%9C-Lv-1

๋Œ“๊ธ€