๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm

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

by bba_dda 2020. 9. 7.
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ ์„ค๋ช…

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

๋งˆ๋ผํ†ค์— ์ฐธ์—ฌํ•œ ์„ ์ˆ˜๋“ค์˜ ์ด๋ฆ„์ด ๋‹ด๊ธด ๋ฐฐ์—ด 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๋Š” ์ฐธ์—ฌ์ž ๋ช…๋‹จ์—๋Š” ๋‘ ๋ช…์ด ์žˆ์ง€๋งŒ, ์™„์ฃผ์ž ๋ช…๋‹จ์—๋Š” ํ•œ ๋ช…๋ฐ–์— ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ•œ๋ช…์€ ์™„์ฃผํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ’€์ด

์ฐธ๊ฐ€์ž์™€ ์™„์ฃผ์ž ๋ฐฐ์—ด์„ ์ •๋ ฌํ•œ ๋’ค, 

๋งจ ์•ž์—์„œ๋ถ€ํ„ฐ ํ•œ์นธ์”ฉ ์„œ๋กœ ๋น„๊ตํ•ด๋ณธ๋‹ค.

์ฐธ๊ฐ€์ž๋ชฉ๋ก์˜ i๋ฒˆ์งธ ์‚ฌ๋žŒ๊ณผ , ์™„์ฃผ์ž๋ชฉ๋ก์˜ i๋ฒˆ์งธ ์‚ฌ๋žŒ์ด ๊ฐ™์œผ๋ฉด ๋„˜์–ด๊ฐ€๊ณ , 

์™ผ์ชฝ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๋‹ค๋ฅด๋‹ค๋ฉด, ์ฐธ๊ฐ€์ž ๋ชฉ๋ก์˜ i๋ฒˆ์งธ ์‚ฌ๋žŒ์ด ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์‚ฌ๋žŒ์ด๋ฏ€๋กœ ์ •๋‹ต์ด ๋œ๋‹ค.

๋ฐ˜๋ฉด์— ์˜ค๋ฅธ์ชฝ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์™„์ฃผ์ž ๋ชฉ๋ก์„ ๋๊นŒ์ง€ ๋ณธ ๊ฒฝ์šฐ, ์ฐธ๊ฐ€์ž ๋ชฉ๋ก์˜ ๋งˆ์ง€๋ง‰ ์‚ฌ๋žŒ์ด ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์‚ฌ๋žŒ์ด๋‹ค.

๋ฌธ์ œ ์นดํ…Œ๊ณ ๋ฆฌ๊ฐ€ hash์—ฌ์„œ C++์˜ hash map์œผ๋กœ ํ’€์–ด๋ณด๋ ค๊ณ  ํ–ˆ์œผ๋‚˜, ์œ„์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์ด ํ›จ์”ฌ ๊ฐ„๋‹จํ•œ ๊ฒƒ ๊ฐ™์•„ ์ด๋ ‡๊ฒŒ ํ’€์ดํ•˜์˜€๋‹ค. 

์ฝ”๋“œ

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

string solution(vector<string> participant, vector<string> completion) {
    string answer = "";
    //์ •๋ ฌ 
    sort(participant.begin(), participant.end());
    sort(completion.begin(), completion.end());

    for (int i = 0;i < completion.size();i++) {
        if (i == completion.size() - 1)
            answer = participant[i + 1];
        if (participant[i] != completion[i]) {
            answer = participant[i];
            break;
        }    
    }
    return answer;
}
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€