목록분류 전체보기 (240)
요르딩딩
이번문제도 역시 레벨2 치고는 상당히 쉬운? 문제라고 생각한다. 다만, 여기서 실행시간 오류로 인해 스택을 써야하는 이슈가 있었다는 점을 생각하면, 어려운? 문제라고 생각 될 수도 있다. 처음에 문제를 풀때는 스택대신 ArrayList에 넣어 순서대로 비교하도록 구현였다. 역시 효율성 문제에서 이슈가 생겨 stack 활용하여 다시 구현하였다. 굳이 equals를 쓰기위해 String으로 변환하는 비효율적인 코드이지만, 나중에는 그냥 char로 두고 ==으로 비교하도록 해야겠다. 한번만 더 꼼꼼히 생각하자!!! 정답만 맞는다고 좋은 코드는 아니다!!! import java.util.*; class Solution { public int solution(String s) { int answer = -1; c..
이번문제는 중복문제만 해결하면 쉬운문제이다. 나는 ArrayList를 사용하여 중복체크를 해주었지만, 보다 간편하게 로직을 구현하려면 Set에 모두 담기만하면 된다. Set에는 중복된 값이 들어가지 않기 때문이다. 보다 간편한 방법을 사용하도록 항상 고민하자 !!! import java.util.ArrayList; class Solution { public int solution(int[] nums) { int answer = 0; ArrayList arr = new ArrayList(); int maxSize = nums.length/2; for(int i=0; i < nums.length; i++) { int n = nums[i]; if(!arr.contains(n)) { arr.add(n); } i..
이번문제는 딱 문제를 읽었을때는 무슨소리야~~ 하면서 기분이 좋지 않았다ㅋㅋㅋㅋㅋ 그러나 이해하고 아래의 구현순서을 확인하니 감이 생겼고, 간단한 손코딩 후 바로 구현하기 시작했다. 구현순서가 자세히 나와있어, 구현하는데는 그다지 어렵지 않았던거 같다. 이 문제는 문제 이해가 핵심이다. 여기서 주요하게 생각하는 포인트를 알아보자. 1. String문자열은 CharAt을 이용하여 배열형태로 사용할 수 있다. (문자열.toCharArray()를 사용하면 바로 변환된다.) 2. 재귀를 사용한다. 재귀가 구현할때 고려해야할 부분들이 많아 어렵게 느껴지겠지만, 이 문제는 시키는대로만 구현하면 된다. 3. 추가로 괄호의 갯수 파악하기, 괄호 반대로 적용하기 등등 조금만 생각하면 쉽게 구현할 수 있다. class S..
이번문제는 비교적 쉬운 문제였다. 다만 런타임에러가 발생하여, 몇가지 문제점들을 확인 후 완료할 수 있었다. 처음에는 리스트를 사용하여 매번 정렬을 하였다가 우선순위 큐를 사용하도록 수정했다. 그리고 while문의 종료조건만 잘 작성한다면 보다 쉽게 해결할 수 있는 문제이다. import java.util.*; class Solution { public int solution(int[] scoville, int K) { int answer = 0; Queue q = new PriorityQueue(); for(int i =0; i < scoville.length; i++) { q.add(scoville[i]); } int first = -1; //무조건 1번 시작 int count = 0; while (..
이번문제는 난이도가 1인 문제라 쉬운 문제였다. 다만 다 풀고난 후 다른사람들의 풀이를 보니 효과적으로 푸신 분들이 많아 정리하려고 한다. 내가 푼 방식의 포인트를 정리해보자. 1. 각 배열을 2진수로 표현하기 2. 모두 공백인 경우만 공백으로 간주하기 이렇게 두가지 포인트를 나는 직접 구현했지만, 몇몇 함수를 적용하면 효율적이면서 간단하게 구현할 수 있었다. 1. result[i] = Integer.toBinaryString(arr1[i] | arr2[i]); 이진수로 변환하여, 비트연산을 이용해 계산한다. 역시 문제를 다 풀었더라도 나보다 잘 푸신분들의 풀이를 참고하면, 배울점이 많이 있는것 같다. 앞으로도 쉬운문제일지라도 곱씹어 보는 시간을 가져보자 [내가 구현한 코드] class Solution ..
https://programmers.co.kr/learn/courses/30/lessons/17684 코딩테스트 연습 - [3차] 압축 TOBEORNOTTOBEORTOBEORNOT [20, 15, 2, 5, 15, 18, 14, 15, 20, 27, 29, 31, 36, 30, 32, 34] programmers.co.kr 이번문제는 생각보다 쉬운듯하면서도 어렵게 느껴졌던 문제이다. 그 이유는 마지막 문자열에대한 처리를 어떻게 해야할지 명확히 인지하지 않은 체 구현을 하려고 했기 때문인 것 같다. 위와 같은 이슈를 해결하고자 검색을 해봤지만, 보다 심플한 로직이 없어 결국 다시한번 고민한 끝에 정답을 맞출 수 있었다. 구현한 방식에 대해서 설명해보도록 하겠다. 1. ArrayList에 A~Z값을 넣고, ..
여러가지 경우에따라 정렬하는 법에 대해 정리해 보았습니다. 종종 정렬을 해야할 경우 아래의 방법을 사용하면 보다 편리하게 정렬할 수 있습니다. 여기서 중요한 포인트를 알아보겠습니다. 1. int[]의 경우 Arrays.sort를 이용하여 오름차순으로 정렬하기 위해서는 Integer[]로 변환 후 정렬해야합니다. 2. 배열을 출력하기 위해서는 Arrays.toSring(arr)를 사용합니다. 3. map의 key값 기준 정렬하기 TreeMap을 사용합니다. 3. map의 value값 기준 정렬하기 위해서는 entrySet애 Comparator 인터페이스를 사용합니다. - Comparator 인터페이스를 생성하여 compare 오버라이드 하여 재정의하여 사용합니다. 4. ArrayList에 존재하는 인덱스 ..
class Solution { static int[] stay, tot; public int[] solution(int N, int[] stages) { int[] answer = new int[N]; // 초기화 stay = new int[N + 2]; //모두 다 클리어한 경우 N+2 tot = new int[N + 2]; for (int i = 0; i < stages.length; i++) { int value = stages[i]; stay[value]++; for (int j = 1; j i).toArray(); //*********** //Arrays.sort(tot, Collections.reverseOrder()); // 역순 //answer = Arrays.stream(tot).mapT..