반응형

안녕하세요 Jin's 입니다.

 

오늘의 코딩테스트 문제는 해시 중 폰켓몬 에 대한 문제 풀이입니다.

 

이 문제를 접근할 때 중요하다고 느낀 포인트는 폰켓몬을 선택할때 다양한 종류의 폰켓몬 종류를 가지고 싶어하기때문에 

폰켓몬을 담을 때 HashSet을 사용하여 중복을 피하는 것이었습니다.

 

import java.util.HashSet;

import java.util.Collections;

class Solution {
    public int solution(int[] nums) {
        HashSet<Integer> pokemonData = new HashSet<>();
        for(int num : nums){
            pokemonData.add(num);
        }

        return Math.min(pokemonData.size(),nums.length / 2);
    }
}

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/1845

 

프로그래머스

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

programmers.co.kr

 

 

 

 

반응형
반응형

안녕하세요 Jin's 입니다.

 

오늘의 코딩테스트 문제는 해시 중 전화번호 목록에 대한 문제 풀이 입니다.

 

 

해당 문제는 startWith을 사용하여 접두사를 찾았습니다.

순서에 상관없이 접두사를 찾아야했기 때문에 반대로 순서를 주어서도 찾았습니다.

" phone_book[i].startsWith(phone_book[j]) || phone_book[j].startsWith(phone_book[i]) "

 

class Solution {
    public boolean solution(String[] phone_book) {
        boolean answer = true;
        for(int i=0; i<phone_book.length;i++){
			for(int j=i+1; j<phone_book.length;j++){
				if(phone_book[i].startsWith(phone_book[j]) || phone_book[j].startsWith(phone_book[i])){
					return false;
				}
			}
		}
        return answer;
    }
}

 

 

여러분도 한번 풀어보세요~

 

반응형
반응형

안녕하세요 Jin's 입니다.

 

코딩테스트 고득점 Kit 첫 문제 풀이입니다ㅎㅎ

앞으로 일주일에 하나는 꼭 올리려고 노력하겠습니다.

 

오늘의 코딩테스트 문제는 해시 중 완주하지 못한 선수에 대한 문제 풀이 입니다.

 

 

해당 문제는 해시라는 카테고리에 있기 때문에 HashMap을 활용하였습니다.

여기서 HashMap의 getOrDefault를 처음 쓰게 되었습니다.

getOrDefault 대해서 간략히 설명드리면 기존에 해당 키가 존재한다면 1을 없다면 0을 반환해줍니다.

 

제 문제 풀이 중 map.put(p,map.getOrDefault(p,0)+1이라고 사용한 이유는

입출력 예시3) [mislav, stanko, mislav, ana] 의 값으로 값의 변화를 설명드리자면

mislav가 처음 들어왔을경우는 값이 mislav,1

mislav가 두번째 들어왔을경우는 값이 mislav,2 로 들어가게 되고

완주한 선수들의 목록(completion)을 동일한 map에 put하게 되는경우 value를 -1을 해주게 되면

나머지 선수들의 값은 0이 되고 mislav의 값은 1로 남아있게 되어 answer 값이라는 것을 알 수 있게 됩니다.

이러한 개념은 동명이인이 아니더라도 값이 1로 남게 됩니다.

 

import java.util.HashMap;

class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        HashMap<String,Integer> map = new HashMap<String,Integer>();
        
        for(String p : participant){
        	map.put(p,map.getOrDefault(p, 0)+1);
        }
        
        for(String c: completion){
        	map.put(c,map.get(c)-1);
        }
        
        for(String m : map.keySet()){
        	if(map.get(m) > 0){
            		answer = m;
            	}
	}
        return answer;
    }
}

 

 

여러분도 한번 풀어보세요~

 

 

반응형

+ Recent posts