본문 바로가기
JAVA

벼락치기 day3 - HashMap 개념, 알고리즘 문제 풀이

by 801lhy 2020. 4. 11.

HashMap

: key - value를 묶어 하나의 entry로 저장, hash이기 때문에 검색에 빠른 속도를 보임

* key 는 중복 불가, value null 사용 가능

* 멀티스레드는 hashmap 을 사용할수 없다 ( hashtable 사용 )


 

알고리즘 문제

완주하지 못한 선수

- 출처 : 프로그래머스 https://programmers.co.kr/learn/courses/30/lessons/42576

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

# 나의 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package day3;
        
public class Solution1 {
    
    public static void main(String[] args) {
        
        
        String [] participant = {"mislav""stanko""mislav""ana"};
        String [] completion = {"ana""mislav"};
        Solution1 s1 = new Solution1();
        
        System.out.println(s1.solution(participant, completion));
    }
    
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        HashMap<String,Integer> member = new HashMap<String,Integer>();
        
        // 1 참가 / 완주 -1 / 완주한 사람 0
        for(String i:participant)
        {
            if(member.get(i)==null)
            {
                member.put(i, 1);
            }else {
                member.put(i, member.get(i) + 1);
            }
        }
        
        for(String j:completion)
        {
            if(member.containsKey(j)==true)
            {
                member.put(j, member.get(j) - 1);
            }
        }
        
        for(String k : member.keySet())
        {
            if(member.get(k)!=0) answer = k;
        }    
       
        return answer;
    }
}
 
 
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

# 다른 사람들의 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        HashMap<String, Integer> hm = new HashMap<>();
        for (String player : participant) hm.put(player, hm.getOrDefault(player, 0+ 1);
        for (String player : completion) hm.put(player, hm.get(player) - 1);
 
        for (String key : hm.keySet()) {
            if (hm.get(key) != 0){
                answer = key;
            }
        }
        return answer;
    }
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

getOrDefault 설명

default V getOrDefault(Object key, V defaultValue)

: 찾는 키가 존재한다면 찾는 키의 값을 반환하고 없다면 기본 값을 반환한다.


참고 블로그 및 사이트

https://vaert.tistory.com/107

 

[Java] HashMap 함수 제대로 알고 사용하기

< 참고 > http://forum.falinux.com/zbxe/?document_srl=570168&mid=lecture_tip&page=1 http://arabiannight.tistory.com/entry/%EC%9E%90%EB%B0%94Java-%EC%9E%90%EB%B0%94-HashMap-%EC%9D%B4%EB%9E%80 1. Hash..

vaert.tistory.com

http://tech.javacafe.io/2018/12/03/HashMap/

 

자바 HashMap을 효과적으로 사용하는 방법

HashMap 은 편하고 빠르다. 하지만 어떻게 하면 효율적으로 잘 사용할지 몸부림치는 순간도 많다. 원문은 https://dzone.com/articles/how-to-use-java-hashmap-effectively 이다. HashMap 는 자바 개발자가 거의 매일 사용하는 가장 유명한 데이터 구조 중 하나이다. 이번 글에서는 자바에서 HashMap 이 무엇인지, 왜 사용해야하는지, 어떻게 사용할지에 대하여 다루려 한다. HashMap 기술에 깊히

tech.javacafe.io

https://blog.naver.com/PostView.nhn?blogId=yongyos&logNo=221478536324

 

[JAVA] Map - getOrDefault 활용

getOrDefaultdefault V getOrDefault(Object key, V defaultValue)찾는 키가 존재한다면 찾는 키의...

blog.naver.com

'JAVA' 카테고리의 다른 글

벼락치기 day4 - Stack  (0) 2020.04.12
벼락치기 day2 -Hash  (0) 2020.04.09
벼락치기 day1  (0) 2020.04.08
JAVA 설치, 환경변수 설정, Eclipse 설ㅊ  (0) 2020.04.04
01. java, 연산자, 변수  (1) 2019.06.06