첫 코드 - 효율성 문제(시간복잡도 [O(n*n)])
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
String str;
int cntPart;
int cntComp;
for (int i = 0; i < participant.length; i++) {
str = participant[i];
cntPart = 0;
cntComp = 0;
for (int j = 0; j < participant.length; j++) {
if (str.equals(participant[j])) {
cntPart++;
}
}
for (int j = 0; j < completion.length; j++) {
if (str.equals(completion[j])) {
cntComp++;
}
}
if (cntPart > cntComp) {
answer = participant[i];
break;
}
}
return answer;
}
}
해결 코드 - HashMap 사용 [O(n)]
import java.util.HashMap;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap<String, Integer> map = new HashMap<>();
int val = 0;
for (String part : participant) {
if (map.get(part) == null) {
map.put(part, 1);
} else {
val = map.get(part) + 1;
map.put(part, val);
}
}
for (String comp : completion) {
val = map.get(comp) - 1;
map.put(comp, val);
}
for (String key : map.keySet()) {
if (map.get(key) == 1) {
answer = key;
}
}
return answer;
}
}
다른사람 코드 - Arrays 사용
import java.util.Arrays;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
Arrays.sort(participant);
Arrays.sort(completion);
for (int i = 0; i < completion.length; i++) {
if (!participant[i].equals(completion[i])) {
answer = participant[i];
break;
}
}
return answer;
}
}
'프로그래머스' 카테고리의 다른 글
프로그래머스 - 모의고사 (0) | 2019.01.07 |
---|---|
프로그래머스 - 짝수와 홀수 (0) | 2019.01.07 |
프로그래머스 - 수박수박수박수박수박수? (0) | 2019.01.07 |
프로그래머스 서울에서 김서방 찾기 (0) | 2019.01.07 |
프로그래머스 - 두 정수 사이의 합 (0) | 2019.01.05 |