๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ๋ฐœ/์ž๋ฃŒ๊ตฌ์กฐ & ์•Œ๊ณ ๋ฆฌ์ฆ˜

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

by 1mj 2021. 11. 1.

https://programmers.co.kr/learn/courses/30/lessons/42576

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜

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

programmers.co.kr

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๊ณ ๋“์  Kit ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜ ๋ฌธ์ œ ํ’€์ด์ด๋‹ค.

์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜๊ฐ€ ๋‹จ ํ•œ ๋ช…์œผ๋กœ ๊ณ ์ •๋˜์–ด ์žˆ์–ด ์‰ฌ์šด ํŽธ์— ์†ํ•˜๋Š” ๋ฌธ์ œ ๊ฐ™๋‹ค.

 

์ •๋ ฌํ•˜์—ฌ ๋‘ ๊ฐ’์„ ๋น„๊ตํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๋งต์— ์„ ์ˆ˜์ด๋ฆ„, ์„ ์ˆ˜ ์ˆ˜(๋™๋ช…์ด์ธ ๊ฐ์•ˆ)๋ฅผ ์ €์žฅํ•˜๊ณ  ๋น„๊ต ๋ฐฉ๋ฒ• ์ด ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ํ’€์–ด๋ณด์•˜๋‹ค.

 

Map (ํ‚ค: ์„ ์ˆ˜ ์ด๋ฆ„, ๊ฐ’: ์„ ์ˆ˜ ์ด๋ฆ„ ์ˆ˜)

import java.util.*;

class Solution {
    public String solution(String[] participant, String[] completion) {
        // participant: ๋งˆ๋ผํ†ค์— ์ฐธ์—ฌํ•œ ์„ ์ˆ˜๋“ค
        // completion: ์™„์ฃผํ•œ ์„ ์ˆ˜๋“ค
        Map<String, Integer> map = new HashMap<>();
        for (String c : completion) {
			map.put(c, map.getOrDefault(c, 0) + 1);
        }
        
        for (String p : participant) {
            if (!map.containsKey(p) || map.get(p) == 0) {
                return p;
            } else {
                map.put(p, map.get(p) - 1);
            }
        }
        
        return "";
    }
}

 

์ •๋ ฌ

import java.util.Arrays;

class Solution {
    public String solution(String[] participant, String[] completion) {
        Arrays.sort(participant);   // ์ฐธ์—ฌํ•œ ์„ ์ˆ˜ ์ •๋ ฌ
        Arrays.sort(completion);    // ์™„์ฃผํ•œ ์„ ์ˆ˜ ์ •๋ ฌ
        int i;
        for (i = 0; i < completion.length; i++) {
            // ์ฐธ์—ฌํ•œ ์„ ์ˆ˜์™€ ์™„์ฃผํ•œ ์„ ์ˆ˜๋ฅผ ๋น„๊ตํ•˜์—ฌ ๋‹ค๋ฅด๋ฉด ๋ฐ”๋กœ ๋ฐ˜ํ™˜
            if (!participant[i].equals(completion[i])) {
                return participant[i];
            }
        }
        return participant[i];
    }
}

๋Œ“๊ธ€