본문 바로가기

코딩테스트27

[PriorityQueue] 효율적인 스케줄링 https://school.programmers.co.kr/learn/courses/30/lessons/155651 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이 문제에서의 팁) 1. 위 문제는 이전 타임의 퇴실시각과 다음 타임의 입실시각을 비교해야 하는 문제로, 입실시각을 기준으로 오름차순 정렬한 배열 & 퇴실시각을 기준으로 오름차순 정렬한 배열 두가지의 배열이 필요하다. import java.util.PriorityQueue; import java.util.Arrays; import java.util.Comparator; class Solution.. 2024. 2. 21.
Comparator, Lamda 사용하여 2차원 배열 정렬하기 2차원 배열을 바로 Arrray.sort()를 통해 정렬하려고 하면 java.lang.ClassCastException: I cannot be cast to java.lang.Comparable 오류가 발생합니다. 원인은 비교 기준이 구현되어 있지 않기 때문에 캐스팅에 실패했기 때문이라 아래와 같이 Comparable,Comparator 인터페이스를 구현하여 정렬기준을 추가해 줘야 합니다. 2차원배열 뿐만 아니라 객체비교할 때도 동일한 유사하니 참고해주세요. 1. Comparator 익명 클래스 구현 int[][] arr = new int[][]{{5,40},{3,50},{1,30},{4,20},{2,10}}; // 1. Comparator 익명 클래스 구현 Arrays.sort(arr, new Comp.. 2024. 2. 20.
[BFS] 전력망을 둘로 나누기 1. 위 문제와 같이 노드와 노드가 연결되어있는 문제의 경우, 인접관계행렬을 만들어 각 노드간 연결되어있을 경우 1, 연결되어있지 않을 경우 0으로 설정해, 배열을 만든다. 2. BFS를 이용해, 선을 하나씩 끊고, 복구하기를 반복하면서 " |두 전력망의 송전탑 개수 차| "가 가장 작은값을 반환한다. 3. BFS / DFS 모두 각 노드를 방문 했는지 안했는지를 나타내는 boolean[] visited를 생성해야 한다. 4. BFS에서는 Queue를 사용하는데, 처음 기준이 되는 노드를 넣어주고, 이 노드와 연결되어 있는 다음 노드를 추가하고 삭제하는데 사용 된다. 코드 import java.util.LinkedList; import java.util.Queue; class Solution { int[.. 2024. 2. 20.
시간 복잡도 계산 https://devraphy.tistory.com/284 시간복잡도 완전정복(1) 0. 시작에 앞서 요즘 백준을 통해 알고리즘 문제를 열심히 풀고있다. 문제를 작성하면 내 코드가 다른 사람들의 코드보다 10ms 정도 더 걸리는 경우도 있고, 올바른 답은 나오지만 시간초과로 인 devraphy.tistory.com 시간 복잡도를 코딩 테스트에 활용하는 방법 이제 시간 복잡도를 표현하는 방법이 빅오 표기법이라는 건 알았습니다. 그럼 빅오 표기법을 어떻게 활용하면 좋을까요? 코딩 테스트 문제에는 제한 시간이 있으므로 문제를 분석한 후에 빅오 표기법을 활용해서 해당 알고리즘을 적용했을 때 제한 시간 내에 출력값이 나올 수 있을지 확인해볼 수 있습니다. 그러면 문제 조건에 맞지 않는 알고리즘을 적용하느라 낭비하.. 2024. 2. 20.
int[] -> List<Integer> 반환? 메소드 리턴타입을 바꾸자 https://school.programmers.co.kr/learn/courses/30/lessons/42840 import java.util.*; class Solution { public int[] solution(int[] answers) { int[] user1 = {1,2,3,4,5}; int[] user2 = {2,1,2,3,2,4,2,5}; int[] user3 = {3,3,1,1,2,2,4,4,5,5}; //맞춘 개수를 담을 배열 int[] cnt = {0,0,0}; //가장 많이 맞춘 사람 넣는 리스트 List list = new ArrayList(); for(int i=0;i 2024. 2. 19.
Arrays.sort( ) - String 타입 / Integer 타입 Arrays.sort( ) 1. String 타입의 정수배열을 sort()로 정렬하면 "숫자문자열"의 첫번째 index의 "숫자문자"에 따라 정렬된다. ex) String array[] = {"3","1117","213","543","12345678"} Arrays.sort(array); // ["1117","12345678","213","3","543"] Arrays.sort(arr,(a,b)->a.compareTo(b)) // 오름차순 : ["1117","12345678","213","3","543"] Arrays.sort(arr,(a,b)->b.compareTo(a)) // 내림차순 : ["543","3","213","12345678","1117"] Arrays.sort(arr,(a,b) -> a-.. 2024. 2. 15.