1. Comparable과 Comparator? 1) Comparable 인터페이스 - java.lang.compable 패키지에 있는 인터페이스 - 정렬 수행시 기본적으로 적용되는 정렬 기준을 정하는 메소드를 정의해놓는 인터페이스이다. 2) Comparator 클래스 - java.util.Comparator 패키지에 있는 클래스 - 기본 정렬 기준과 다른 기준을 정하여 정렬을 할 필요가 있을 때 사용 2. 사용 방법 1) Comparable 기본적인 Comparable 인터페이스의 사용 방법은 다음 코드와 같이 Comparable을 정렬이 필요한 클래스을 제네릭 타입으로 implements해주고, compareTo 메소드를 오버라이딩하여 정렬 기준을 스스로 정해주면 된다. Code: public cla..
...? 이해가 잘 안되는 문제였다. 처음엔 그저 stack하나를 선언해놓고 주식의 가격이 기준치부터 stack에 다음 가격과 비교하여 넣는 코드를 작성했다. 첫 코드는 이중 for 문 안에서 스택이 비었는지 확인하고, 비어있으면 스택을 하나 채운 뒤 다음에 올 가격과 비교 후, 가격이 같거나 올라갔을 경우 계속 우겨넣다가 가격이 떨어지는 순간, 스택의 크기를 측정하여 사이즈를 정답 배열에 넣어 완성했다. break도 없고 하나의 stack을 계속 지웠다 썼다 하니, 당연히 시간 초과가 나올 줄 알았으나, 첫번째 시도는 테스트 케이스 1(예시로 나온 케이스) 만 통과하고 나머지 19개의 테스트 케이스를 모조리 틀렸다. 뭐...시간도 당연히 초과되었다. 두번째 코드는 stack을 null값으로 메모리를 미..
트럭이 한 대씩 다리를 지난다. 즉, 먼저 다리를 건너기 시작한 트럭이 무조건 먼저 다리를 빠져나간다. Queue를 사용하면 간단하게 풀리는 문제이다. 처음엔 endPointer을 truck_weight 개수만큼 만들어 push와 pop을 구현하여 만들려고 시도했으나 for문 로직을 완전히 잘못 이해하여 좀 많이 허우적거렸다. 결국 돌고 돌아 LinkedList를 사용하는 JAVA 내부 Queue 클래스를 사용하여 문제를 풀었다. 트럭의 대수만큼 반복문을 돌리고 그 안에서 while문을 돌려 새로운 트럭이 다리를 건너기 시작하면, while을 빠져나와 다음 트럭을 확인하는 절차를 가진다. 반복문은 마지막 트럭이 다리에 올라가면 종료하므로, answer 은 다리의 길이만큼 증가시켜야 정답이 나온다. Cod..
처음엔 무작정 로직을 그대로 구현하려고 마음을 먹었다. 복잡해 보이는 문제일수록 오히려 한번 데이는 것이 좀 더 효율적인 방법을 빠르게 찾는 방법인 경우도 때때로 있었으니...그러나 제한 사항을 두번, 세번 보다가 문득, 이 문제는 Comparable이나 Comparator을 사용하지 않으면 진짜 엄청난 노가다 문제가 될 것 같다는 확신이 들었다. 객체와 sort를 이용한 해결 방법은 다음과 같다. 1. plays, ids를 인자로 갖는 SongInfo 객체를 조회수 내림차순, id 오름차순으로 정렬할 Comparable 과 함께 생성 2. 조회수의 누적합 totalPlays와 SongInfo의 ArrayList를 인자로 갖는 GenresInfo 객체를 totalPlays 내림차순으로 정렬할 Compar..
음...일단 도대체 왜 어제 풀었던 와 같은 LV인지 모르겠다. 같은 원리로 푸는 건 인정하나, 애초에 들어가는 기본 원리 자체가 나는 이해하기 꽤나 힘들었다. 처음엔 도저히 감이 안와서 하나씩 카운트하며 경우의 수를 모두 세려고 생각했다. 하지만 for 문이 최소 3개 이상은 들어갈 게 분명해서(이는 99.99%의 확률로 테스트 케이스를 통과하지 못한다.) 다른 방법을 고민했다. 그렇게 해서 도출한게, 바로 경우의 수 공식!(확통을 제대로 공부하여 안 까먹었다면 바로 나왔겠지....) 경우의 수 공식: 위와 같이, 4종류의 옷을 각각 A, B, C, D 개씩 가지고 있다면, 옷을 모두 벗는 경우를 제외하고 모든 경우의 수는 (A + 1)(B + 1)(C + 1)(D + 1)이다. Input은 {Glas..
전화번호 목록에 어떤 번호가 다른 번호의 앞부분에 모두 포함되는 경우를 찾아 false를 리턴하면 되는 간단한 문제이다. 처음엔 "이건 또 왜 Map을 써야하지?" 라는 생각이 들 정도의 간단한 문제인 줄 알아, 그대로 이중 for문을 이용하여 풀었다. 결과는... 아주 당연하게도 시간 초과....ㅎㅎ 테스트 케이스들이 100ms를 넘어갈 때부터 느낌이 쎄~ 하긴 했지만...처참했다. 그렇다면, Map을 사용하여 시간을 줄여야한다는 건데... 어떻게...? 고민 끝에 전화번호를 길이가 긴 순서대로 정렬하여 조각 조각 잘라 HashMap에 넣고, 넣기 전에 번호의 조각이 들어가 있는지, 없는지 확인하여 이미 들어간 조각이라면 바로 false를 반환하도록 설계하기로 했다. 우선 정렬은 Comparator클래..
Hash 카테고리 안에 있는 문제라 당연히 HashMap을 사용하여 푸는 문제로 착각했다. 물론 풀이는 가능하지만 HashMap을 사용하게되면 동명이인이 마라톤에 참가했을 경우 문제가 좀 복잡해진다. Map을 사용하지 않고 그냥 배열을 각각 정렬 후에 일치 여부를 확인해주면 아주 간단하게 풀이가 가능한 문제이다. Code: import java.util.Arrays; public class Solution { public String solution(String[] participant, String[] completion) { String answer = ""; boolean isBreaked = false; Arrays.sort(participant); Arrays.sort(completion); f..
문제를 보자마자 무의식적으로 이중배열을 사용하여 문제를 풀려고 했었다. 이중배열 선언 후, 하나하나 메모리를 할당해주어 방번호를 지정하여 알아내는 방법을 사용하면, 확실하게 구현이 가능했으나, 이건 속도적, 메모리적으로 매우매우매우 비효율적인 방법이다. 이 문제는 나눗셈과 모듈러 연산 한번씩이면 바로 해결되는 아주 간단한 문제이다. Code: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new Buffered..
처음 문제를 보고, 단순한 객체 구현만으로 쉽게 풀 수 있을 줄 알았다.... ㅎㅎ...시간 제한이 0.15초에 입력 범위가 10000000000이라는 사실을 간과했다. 단순 객체 구현으로 풀면 10000% 시간 초과가 나올 것이 뻔했기에 문제를 수학적으로 접근하는 것이 필요했다. 달팽이는 낮에 A 만큼 올라가고, 밤에 B만큼 떨어진다. 즉, 전체 높이를 (A-B)만큼 나눈 몫이 정답인가? 했지만 한 가지 조건이 더 있다. 한번 달팽이가 정상에 도달하면, 달팽이는 미끄러지지 않는다. 정리하면, 달팽이는 하루에 (A-B)씩 V 높이를 오르는 것이 아닌, (A-B)씩 V - B 높이를 오르는 것이다. 또한 높이와 달팽이의 속력을 나눈 나머지가 0이면, 나눈 몫이 정답이겠지만, 나누어 떨어지지 않는다면, 달팽..
원리는 간단하다. 시작 숫자가 1일 때, 벌집은 1개의 층을 가진다는 개념부터 시작하면, Number Layer 1 1 ~7 2 ~19 3 ~37 4 ~61 5 즉, 앞 층의 마지막 숫자에 Layer x 6 을 더해주면 다음 층의 숫자 범위를 구할 수 있다. Code: import java.io.IOException; import java.util.Scanner; public class Main { public static void main(String[] args) throws IOException { Scanner input = new Scanner(System.in); int firstInput = input.nextInt(); int layer = 1; int start = 1; while(start
- 맛집
- await
- redux-thunk
- 인천 구월동 이탈리안 맛집
- 이탈리안 레스토랑
- redux
- 인천 구월동 맛집
- Promise
- javascript
- AsyncStorage
- Async
- 파니노구스토
- react
- 정보보안기사 #실기 #정리
- react-native
- Total
- Today
- Yesterday