HANDA개발
HANDA개발공부
HANDA개발
전체 방문자
오늘
어제
  • HANDA_list
    • 취업일지
    • 일상
    • TIL
    • Linux
    • RabbitMQ
    • Spring
      • Security
      • Batch
      • Project
    • ERROR
    • DB
      • Oracle
      • PostgreSQL
    • JUnit
    • JAVA
    • AWS
    • OAuth2.0
    • Redis
    • API
    • Jenkins
    • Nigix
    • CS
    • 코테준비
      • 자료구조
      • 알고리즘
    • 학교수업
    • 디자인패턴

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • error
  • 재실행
  • JAVA명령어
  • 역직렬화
  • Spring
  • EAI
  • 어노테이션
  • 프로그래머스
  • mybatis
  • gson
  • SpringBatch
  • oracle
  • 프로시져호출
  • garbaage
  • @Valid
  • MQ
  • Parameter
  • 애플코딩
  • 공부준비
  • batch
  • JVM
  • java실행과정
  • 데이터베이스
  • Job
  • cmd
  • 스프링배치
  • 상태관리
  • 다른파라미터
  • 명령어
  • valid어노테이션

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
HANDA개발

HANDA개발공부

코테준비/알고리즘

[Hash문제] 완주하지 못한 선수

2022. 6. 15. 19:53
import java.util.HashMap;

/* hash 해결법*/
// 해시는 key - value의 조합 => HashMap
class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        // 1. 해시맵을 만든다.(participant 기준) 
        HashMap<String,Integer> map = new HashMap<>();
        for(String player : participant){
            // 없었으면 0, 있었으면 +1
            map.put(player, map.getOrDefault(player, 0) + 1);         
        }
        
        // 2. 해시맵을 뺀다.(completion 기준)
        for(String player : completion){
            // 기존 값을 가져와서 1을 뺀 값을 넣어달라.
            map.put(player, map.get(player) - 1);
        }
        
        // 3. value가 0이 아닌 사람을 찾는다.
        // keySet -> map에 있는 key들을 하나씩 꺼내 써보기.
        for(String key : map.keySet()){
            if(map.get(key) != 0){
                answer = key;
                break;
            }
        }
        return answer;
    }    
}

/*
선수 A, B, C
완주한 선수  B,C
완주 못한 선수 A

1. Sorting 
두 list를 sorting 한다.

2. 비교
completion list의 length 만큼 돌면서 participant에만 존재하는 한 명을 찾는다.

3. 마지막 주자
List를 전부 다 뒤져도 답이 없다면, participant의 마지막 주자가 완주하지 못한 선수이다.

import java.util.Arrays;
// sorting / loop 해결법
class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        // 1. 두 배열을 정렬한다.
        Arrays.sort(participant);
        Arrays.sort(completion);
        // 2. 두 배열을 다를 때까지 찾는다.
        int i=0;
        for(; i < completion.length; i++) 
            if(!participant[i].equals(completion[i]))
                break;

        // 3. 여기까지 됐다면, 마지막 주자가 완주하지 못한 선수다.
        
        return participant[i];
    }

}

*/
import java.util.HashMap;
import java.util.Map;
import java.util.Iterator;
/* hash 해결법 - hash & entrySet*/
// 해시는 key - value의 조합 => HashMap
class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        // 1. 해시맵을 만든다.(participant 기준) 
        HashMap<String,Integer> map = new HashMap<>();
        for(String player : participant){
            // 없었으면 0, 있었으면 +1
            map.put(player, map.getOrDefault(player, 0) + 1);       
        }
        
        // 2. 해시맵을 뺀다.(completion 기준)
        for(String player : completion){
            // 기존 값을 가져와서 1을 뺀 값을 넣어달라.
            map.put(player, map.get(player) - 1);
        }
        
        // 3. value가 0이 아닌 사람을 찾는다.
        // entrySet 이 keySet보다 빠름.
        Iterator<Map.Entry<String, Integer>> iter = map.entrySet().iterator();
        
        while(iter.hasNext()){
            Map.Entry<String, Integer> entry = iter.next();
            if(entry.getValue() != 0){
                answer = entry.getKey();
                break;
            }
        }
        
        return answer;
    }
}

'코테준비 > 알고리즘' 카테고리의 다른 글

dp  (0) 2022.11.11
4. 시뮬레이션  (0) 2022.11.11
코테 주요 출제문제  (0) 2022.05.14
    '코테준비/알고리즘' 카테고리의 다른 글
    • dp
    • 4. 시뮬레이션
    • 코테 주요 출제문제
    HANDA개발
    HANDA개발

    티스토리툴바