반응형

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

 

오늘의 코딩테스트 문제는 스택/큐 중 같은 숫자는 싫어 에 대한 문제 풀이입니다.

 

 

  • Stack 을 사용하여 lastElement (마지막에 들어간 값 확인을 위함)를 사용하여 동일한 숫자가 들어오지 않았을 경우만 Stack 에 push 해주도록 하였습니다.
  • stack 인 answer 를 배열로 변환해주었습니다. 앞으로 잘 사용할 것 같습니다. answer.stream().mapToInt(Integer::intValue).toArray()

 

import java.util.*;

public class Solution {
    public int[] solution(int []arr) {
        Stack<Integer> answer = new Stack<>();
         answer.push(arr[0]);
         for(int i=1; i<arr.length;i++){           
            if(!answer.lastElement().equals(arr[i])){
                answer.push(arr[i]);
            }
        }
        
        return answer.stream().mapToInt(Integer::intValue).toArray();
    }
}

 

 

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

 

프로그래머스

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

programmers.co.kr

 

반응형
반응형

안녕하세요 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 입니다.

 

오늘의 코딩테스트 문제는 스택/큐 중 주식가격 에 대한 문제 풀이 입니다.

 

 

해당 문제의 포인트는 3초시점의 입출력 예 설명입니다.

- 3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다

감소하는 순간도 1초 동안 떨어지지 않는 것으로 하는 부분 때문에 else 조건을 추가하고 1초 시간 추가 후

바로 break 하였습니다.

 

class Solution {
    public int[] solution(int[] prices) {
        int[] answer = new int[prices.length];
        
        for(int i=0;i<prices.length;i++){
			int p = prices[i];
			int time = 0;
			for(int j=i+1;j<prices.length;j++){
				if(p<=prices[j]){
					time++;
				}else{
					time++;
					break;
				}
			}
				answer[i]=time;
		}
        
        return answer;
    }
}

 

 

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

 

반응형
반응형

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

 

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

 

 

해당 문제는 의상 조합 개수를 구하는 문제였습니다.

옷 종류별 개수를 구하기 위해 map에 clothes  값을 넣었습니다.

 

예시로 공식을 설명드리자면,

headgear(yellow_hat, green_turban, 입지 않았을 경우(eyewear만 착용했을경우)) : 총 3가지수

eyewear(blue_sunglasses, 입지 않았을 경우(headgear만 착용했을경우))총 2가지수

 

따라서  headgear 개수 * eyewear 개수 - 1( 둘다 입지않은 경우의 수 ) 공식을 사용하여서 풀이하였습니다.

 

import java.util.HashMap;

class Solution {
    public int solution(String[][] clothes) {
        int answer = 1;
        HashMap<String, Integer> map = new HashMap<String, Integer>();
		
		for(int i=0; i< clothes.length;i++){
			map.put(clothes[i][1], map.getOrDefault(clothes[i][1], 0)+1);
		}

		for(String c : map.keySet()){
			answer*= map.get(c)+1;
		}
		
        return answer-1;
    }
}

 

 

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

 

반응형
반응형

안녕하세요 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;
    }
}

 

 

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

 

 

반응형
반응형

 

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

 

오늘은 기존에 제가 올리고 있는 백준과 비슷한 프로그래머스의 고득점 Kit에 대해서 설명드리려고 합니다.

 

코딩테스트 연습

기초부터 차근차근, 직접 코드를 작성해 보세요.

programmers.co.kr

 

0. 왜 프로그래머스의 고득점 Kit를 시작하려고 하는지?

자체적 백수에서 벗어나 취준생이 되야하는 날이 점점 다가오고 있어 이번달부터 백준과 번갈아가며 프로그래머스의 고득점 Kit를 풀어보려고 합니다. 물론 코딩테스트를 보지 않는 회사로 지원할 수도 있지만 코딩 공부 겸 좀 더 꼼꼼하게

책점하는 코딩테스트 고득점 Kit을 시작하려구요ㅎㅎ

 

1. 코딩테스트 고득점 Kit는 어떻게 이루어져있는지?

Kit는 해시, 스택/큐, 힙, 정렬, 완전탐색, 탐욕법, 동적계획법, 깊이/너비 우선 탐색, 이분탐색, 그래프로

 36문제로 이루워져있습니다.

 

2. 문제 풀이는 어떻게 하는지?

문제를 선택하면 아래와 같이 화면이 구성되어 있습니다.

왼쪽에는 문제 설명과 입출력예제가 있고, 오른쪽은 실행해보고 실행결과를 볼 수 있도록 되어있습니다.

 

문제를 풀고 실행을 하게 되면 아래와 같이 입출력 예시로 기댓값이 잘 나오는지 확인 할 수 있습니다.

문제 실행

 

백준과 가장 다른 점이 제출하고 난 뒤의 책점하는 포인트인거 같습니다.

(저는 먼저 풀었었기 때문에 같은 코드로 생성한 결과값이 뜬 것이니 참고부탁드려요~)

백준은 정확성과 시간제한이라면 고득점 Kit는 정확성과 효율성을 보고 책점을 합니다.

 

고득점코딩테스트 고득점 Kit는 코딩테스트에 자주 나오는 대표적 케이스를 직접 풀어보고 책점받을 수 있어

좋은 것 같습니다. 앞으로 각 문제들을 어떻게 풀었는지 공유도 드리도록 할게요!!

 

 

반응형

+ Recent posts