코딩테스트 고득점Kit부터 풀어보라 추천을 해줘서 이것부터 풀기로 했다.
Hash문제에서 가장 첫번째 문제. 마라톤 참가 선수 배열과 완주선수 배열이 주어지고, 완주하지 못한 선수 이름을 반환하는 문제이다. 그저 마라톤 참가 선수 배열과 완주 선수 배열을 비교해 완주배열에 없는 이름을 리턴하면 된다. 여태까지 Hash를 써본적이 거의 없는데 이번 단계를 통해 확실히 알아두어야 할 듯 하다.
Java
import java.util.HashMap;
public class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap<String,Integer> hm = new HashMap<>();
for (String item : participant){
hm.put(item,hm.getOrDefault(item,0)+1);
}
for (String item : completion){
hm.put(item, hm.get(item)-1);
}
for (String item : hm.keySet()){
if (hm.get(item) != 0){
answer = item;
break;
}
}
return answer;
}
}
swift는 지원을 해주지 않지만 dictionary를 이용해 풀어보았다. Java처럼 getOrDefault함수가 존재하지 않아서 dictionary에 key가 존재하지 않을 시 key를 만들고 value값이 1이 되도록 했다.
Swift
import Foundation
func solution(participant : [String],completion : [String])->String{
var answer = ""
var hm : [String:Int] = [:]
for item in participant {
if hm.contains(where: { (key: String, value: Int) in
return key == item
}){
hm[item] = hm[item]!+1
}else{
hm[item]=1
}
}
for item in completion {
hm[item] = hm[item]!-1
}
for item in hm.keys {
if hm[item] != 0{
answer = item
break
}
}
return answer
}
print(solution(participant: ["A","B","C","D","F"], completion: ["A","B","C","D"]))
'Algorithm > 프로그래머스' 카테고리의 다른 글
프로그래머스 : 기능개발(Swift) (0) | 2021.09.14 |
---|---|
프로그래머스 : 베스트 앨범(Swift) (0) | 2021.09.13 |
프로그래머스 : 위장(Swift) (0) | 2021.09.11 |
프로그래머스: 전화번호 목록(Swift) (0) | 2021.09.10 |
프로그래머스 : 로또의 최고 순위와 최저 순위(Swift) (0) | 2021.09.04 |