목록프로그래머스 (19)
개발 무지렁이

더 맵게 🪅 매번 배열의 원소를 제거하고 넣고, 정렬해야하는 조건에서 우선순위 큐를 생각해 낼 수 있느냐 🪅 같은 동작을 반복해서 해야할 때 이를 메서드로써 만들 수 있느냐 🪅 항상 처음과 끝은 예외상황이 발생할 수 있는 것을 확인했느냐 💡 문제 접근 과정 음식 개수에 따라 scoville 최초 배열의 길이가 달라지고 한 번 스코빌 지수를 섞을 때마다, 배열의 길이가 1씩 줄어든다. 이 조건을 봤을 때 가변길이 배열(ArrayList)을 써야겠다는 생각이 들었다. 이 자료구조를 썼더니 매번 정렬해줘야돼서인지(?) 효율성테스트를 통과하지 못했다. (중간에 모든!! 음식의 스코빌 지수가 K이상이어야하는 조건을 놓쳐서 많이 헤맸다) 즉, 자료구조에 원소를 넣을 때마다 정렬을 해주는 자료구조가 무엇인지 생각해봤..

가장 큰 수 🪅 클래스를 정렬하는 방법을 알고 있느냐 => implements Comparable, compareTo(), Collections.sort() 🪅 클래스를 정렬할 때 두번째 정렬기준을 세울 수 있느냐 💡 문제 접근 과정 한자리 수든, 두자리 수든, 세자리 수든 첫째 자리 수가 큰 것이 중요하다. 첫째자리 수가 같을 때 둘째 자리 수가 중요하다. 즉, 하나의 숫자에서 빼올 수 있는 정보가 많고 이를 클래스를 이용해 정리해야겠다는 생각을 했다. 클래스를 이 기준에서 정렬하기 위해 Comparable 인터페이스와 compareTo 메서드를 이용해야 했고, 두번째 정렬기준까지 구현해야했다. 이 상태에서 Collections.sort()를 하면 위의 기준에 따라 클래스가 정렬된다. 나는 입력이 두자..

K번째 수 🪅 배열을 간단하게 자르는 메서드를 알고 있느냐 => Arrays.copyOfRange() 🪅 간단하게 정렬하는 메서드를 알고 있는냐 => Arrays.sort() 💡 문제 접근 과정 처음에 i번째 숫자부터 j번째 숫자까지 자르라고 했을 때, 무심코 String의 내장메서드 substring()을 이용하면 되지라는 생각을 했는데 잘 보니 배열을 자르는 것(?)이었다. 배열을 간단하게 자르는 메서드를 검색해보니 Arrays.copyOfRange(배열, 시작인덱스, 끝인덱스+1)를 찾을 수 있었고, 방식은 substring과 똑같이 동작했다 즉, 시작인덱스는 시작하고자 하는 인덱스부터 넣는 것이 맞으나, 끝인덱스는 자르고자하는 인덱스보다 +1을 해야 자르고자하는 인덱스까지 잘린다. import j..

위장 🪅 부류별 가짓수를 구할때, 부류를 key로 가짓수를 value로 생각할 수 있느냐 => HashMap 🪅 경우의 수(조합)를 구할 수 있느냐 💡 문제 접근 과정 중요한 것은 부류별 '의상의 가짓수'이지 의상의 이름이 아니다 따라서 부류를 key로 두고 해당 부류의 가짓수를 value로 두는 HashMap을 생성 모든 부류마다 +1을 해주는 이유는 안입는 경우의 수를 포함하기 위해서이다. 마지막에 -1을 해주는 이유는 모두 안입는 경우의 수 제거를 위해서이다. import java.util.*; class Solution { public int solution(String[][] clothes) { int answer = 1; // key: 부류, value: 가짓수 Map map =..

전화번호 목록 🪅 String의 내장 메서드 startsWith()를 알고 있느냐 🪅 String배열을 Arrays.sort()했을때 어떤 식으로 정렬되는지 알고 있느냐 => 첫번째 문자를 기준으로 정렬된다 🪅 for문을 한번만 쓰고도 문제를 해결할 수 있느냐(효율성 테스트) 💡 문제 접근 과정 phone_book배열 중에 어떤 원소가 prefix가 될지는 입출력 예마다 다르다. 때문에 prefix가 될 원소를 for문을 통해 하나씩 대입해보고 isContain 메서드에서 prefix를 제외한 나머지 원소들과 접두사를 비교해봄으로써(startsWith()) for문을 두번 돌렸더니 효율성 테스트를 통과하지 못했다. 결국 for문을 한 번 돌리면서 문제를 해결해야했는데 이를 위해 문자열 정렬이 필요했다. ..

폰켓몬 🪅 몇종류가 있는지 확인하기 위해 HashSet을 생각해 낼 수 있느냐 💡 문제 접근 과정 중복을 제거해야 몇종류가 있는지 보이니까 nums의 원소를 HashSet에 넣고, 종류의 개수를 확인했다. 주의해야할 것이, 잡을 수 있는 폰켓몬의 수보다 폰켓몬의 종류가 적을 수 있다는 것이다. 이를 유념해서 코드를 짯다. import java.util.*; class Solution { public int solution(int[] nums) { int answer = 0; int possible = nums.length/2; Set set = new HashSet(); for(int i = 0; i se..