본문 바로가기

코딩테스트/프로그래머스17

[프로그래머스] 스택/큐 : 주식가격 Java 가격이 떨어질 때까지의 원소 개수만 세면 된다. 반목문 돌리면서 떨어지지 않는 동안 증가시켜주면 되는 간단한 문제이다. 이 문제에 스택/큐를 이용해보자면 기준이 될 원소를 잡고 원소보다 같거나 큰 원소들을 스택에 쌓는다. 기준보다 작아지는 원소를 만나면 top을 answer에 추가한다. 위의 로직으로 스택을 사용할 수 있을 것이다. import java.util.*; class Solution { public int[] solution(int[] prices) { int length = prices.length; int[] answer = new int[length]; int[] stack = new int[length]; int standard = 0; int top = 0; for(int i = 0;.. 2020. 9. 7.
[프로그래머스] 해시 : 베스트앨범 Kotlin Kotlin을 잘 다루는 사람들이 너무 많더라,,, 특히 stream을 정말 잘 사용하시는 분들이 있던데 참고하여 풀어보았다. Stream을 들어보기만 했는데 확실히 강력하다. 해시의 개념을 이용하여 장르별로 분류하고 장르의 재생 횟수를 내림차순으로 정렬한다. 그 이후 앞에서 2개씩 가져와준다. 코드를 살펴보자 class Solution { fun solution(genres: Array, plays: IntArray): IntArray { return genres.indices.groupBy { genres[it] } // {classic=[0,2,3], pop=[1,4]} Type : Map .toList() // [(classic, [0,2,3]),(pop,[1,4])] Type : List .so.. 2020. 9. 5.
[프로그래머스] 해시 : 위장 Java 사실상 경우의 수 문제이다. 이 문제가 해시 유형인 이유는 Key를 종류, Value를 종류의 옷 가지 수로 데이터를 다루라는 의도이지 않나 싶다. 문제의 핵심 내용은 다음과 같다. 모든 경우에서 아무것도 입지 않는 경우를 빼는 것이다. 즉, 모든 경우는 종류별 가지수(안 입는 경우를 고려해 1을 더하기!)를 전부 곱하는 것이고, 아무것도 입지 않는 경우 1을 빼주는 것이다. import java.util.*; class Solution { public int solution(String[][] clothes) { int answer = 1; HashMap clothMap = new HashMap(); for(String[] cloth : clothes){ clothMap.put(cloth[1],clot.. 2020. 9. 5.
[프로그래머스] 해시 : 전화번호 목록 Java 간단한 문제이다. 해당 문자열을 포함하고 있는지 확인하는 문제이다. 문자열과 관련된 문제인데 사실 문자열을 다루는 함수만 알면 쉽게 풀 수 있다. 코드는 다음과 같다. class Solution { public boolean solution(String[] phone_book) { boolean answer = true; for(int i = 0; i < phone_book.length; i++){ for(int j = 0; j < phone_book.length; j++){ if(i != j){ if(phone_book[i].startsWith(phone_book[j])){ return false; } } } } return answer; } } phone_book의 원소가 다른 원소의 시작인지 확인을.. 2020. 8. 30.