์์ฃผํ์ง ๋ชปํ ์ ์
๋ฌธ์
https://programmers.co.kr/learn/courses/30/lessons/42576#
๋ฌธ์ ์ค๋ช
์๋ง์ ๋ง๋ผํค ์ ์๋ค์ด ๋ง๋ผํค์ ์ฐธ์ฌํ์์ต๋๋ค. ๋จ ํ ๋ช ์ ์ ์๋ฅผ ์ ์ธํ๊ณ ๋ ๋ชจ๋ ์ ์๊ฐ ๋ง๋ผํค์ ์์ฃผํ์์ต๋๋ค.
๋ง๋ผํค์ ์ฐธ์ฌํ ์ ์๋ค์ ์ด๋ฆ์ด ๋ด๊ธด ๋ฐฐ์ด 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๋ ์ฐธ์ฌ์ ๋ช
๋จ์๋ ๋ ๋ช
์ด ์์ง๋ง, ์์ฃผ์ ๋ช
๋จ์๋ ํ ๋ช
๋ฐ์ ์๊ธฐ ๋๋ฌธ์ ํ๋ช
์ ์์ฃผํ์ง ๋ชปํ์ต๋๋ค.
์ฝ๋
#include <string>
#include <vector>
using namespace std;
int hashFunction(string s) {
int result = 0;
for (int i = 0; i<s.size(); i++) {
result += s[i];
}
return result % 40;
}
void insertHashTable(vector<string>& table, int value, string s) {
if (table[value].compare("")) {// ๋น์ด์์ง ์๋ค๋ฉด
for (int i = 0; i<40; i++) {
if (!table[i].compare("")) {
table[i] = s;
break;
}
}
}
else
table[value] = s;
}
bool checkValid(vector<string>& table, int index, string s) {
if (!table[index].compare(s)) {
table[index] = "";
return true;
}
for (int i = 0; i<40; i++) {
if (!table[i].compare(s)) {
table[i] = "";
return true;
}
}
return false;
}
string solution(vector<string> participant, vector<string> completion) {
string answer = "";
vector<string> hashTable(40);
// ๋ฃ๊ธฐ
for (int i = 0; i<completion.size(); i++) {
int index = hashFunction(completion[i]);
insertHashTable(hashTable, index, completion[i]);
}
//๊ฒ์ฌ
for (int i = 0; i<participant.size(); i++) {
int index = hashFunction(participant[i]);
if (!checkValid(hashTable, index, participant[i])) { // ์์ผ๋ฉด
answer = participant[i];
break;
}
}
return answer;
}
ํ์ด
ํด์ ๋ฌธ์ ๋ผ๊ณ ํด์ ํด์ ํจ์ ๊ตฌํํ๋๋ฐ ใ ... ๋ด๊ฐ ์๊ฐํ๋ ์์ ๋ฌธ์ ๊ฐ ์๋์๋๊ฐ๋ค.
๋ค๋ฅธ ์ฌ๋์ ํ์ด
#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<participant.size(); i++){
if(i==completion.size()){
answer = participant[i];
break;
}
if(participant[i].compare(completion[i])){
answer = participant[i];
break;
}
}
return answer;
}
sort๋ฅผ ์ด์ฉํด์ ๊ฐ๋จํ๊ฒ ํ ์ ์๋ ๋ฌธ์ ..
Comment