yeahzzz
archive
yeahzzz
전체 방문자
오늘
어제
  • 분류 전체보기 (164)
    • Language (41)
      • Python (12)
      • JAVA (21)
      • C&C++ (8)
    • Algorithms (25)
      • programmers (9)
      • study log (16)
    • Problems & Solutions (14)
    • Major (29)
      • Data Structure & Algorithm (14)
      • Linux(Ubuntu) (9)
      • Security (2)
      • Linear Algebra (4)
    • FE (44)
      • Web(HTML5, CSS, JS) (5)
      • React & TS (26)
      • 코딩일기 (10)
    • BE (1)
      • Node.js (1)
    • Pytorch (8)
    • Server (2)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
yeahzzz

archive

Algorithms/programmers

[Hash] Lv.1 폰켓몬, 완주하지 못한 선수

2024. 3. 4. 21:39

1. 폰켓몬

 

프로그래머스

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

programmers.co.kr

중복이 허용되지 않는 HashSet 자료구조를 사용하면 바로 풀 수 있는 문제

ex) [3,3,3,2,2,4]를 HashSet에 저장하면 중복되는 숫자를 제외한 3,2,4만 저장된다.

import java.util.*;
import java.io.*;

class Solution {
    public int solution(int[] nums) {
        int answer = 0;
        int pokemon = nums.length/2;
        HashSet<Integer> set = new HashSet<Integer>();
        for(int i = 0; i < nums.length; i++) {
        	set.add(nums[i]);
        }
        int count = 0;
        for(int n: set) {
        	count++;
        	if(count == pokemon) break;
        }
        answer = count;
        return answer;
    }
}

 

 

2. 완주하지 못한 선수

 

프로그래머스

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

programmers.co.kr

'동명이인이 있을 수 있다' 라는 조건이 있으므로 HashSet은 절대 사용하면 안되는 것을 알 수 있다. (set은 중복이 허용되지 않으므로)

 

HashMap을 이용하자. 

참가자들을 map에 <참가자이름, 1>로 put하고 참가자가 완주했을 경우 value 값을 0으로 바꿔주면, value가 0인 참가자들이 정답이 된다.

하지만 이때, map.put(who,1);로 하면 틀린 코드가 된다. '동명이인이 있을 수 있다' 라는 조건을 처리할 수 없기 때문이다.

따라서 getOrDefault를 사용해주어 이 조건을 처리해줘야 한다. 

☆getOrDefault: 찾는 key가 존재하면 해당 key에 매핑되어 있는 값을 반환하고, 그렇지 않으면 디폴트 값이 반환됨
import java.io.*;
import java.util.*;

class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        HashMap<String,Integer> map = new HashMap<String,Integer>();
        
        for(String who: participant) 
        	map.put(who, map.getOrDefault(who, 0)+1);
        
        for(String who: completion)
        	map.put(who, map.get(who)-1);
        
        Iterator <Map.Entry<String, Integer>> it = map.entrySet().iterator();
        while(it.hasNext()) {
        	Map.Entry<String, Integer> entry = it.next();
        	if(entry.getValue()!=0) {
        		answer = entry.getKey();
        		break;
        	}
        }
        return answer;
    }
}

 

저작자표시

'Algorithms > programmers' 카테고리의 다른 글

[Hash] 신고 결과 받기, 베스트앨범  (1) 2024.03.08
[Binary Search Tree] 길 찾기 게임  (0) 2024.02.29
[이분탐색] 징검다리 건너기  (0) 2024.01.23
[이분탐색] 프로그래머스 입국심사  (0) 2024.01.11
[Greedy] 프로그래머스 체육복, 큰 수 만들기, 구명보트, 단속카메라  (1) 2023.12.28
    'Algorithms/programmers' 카테고리의 다른 글
    • [Hash] 신고 결과 받기, 베스트앨범
    • [Binary Search Tree] 길 찾기 게임
    • [이분탐색] 징검다리 건너기
    • [이분탐색] 프로그래머스 입국심사
    yeahzzz
    yeahzzz

    티스토리툴바