프로그래머스

코딩 테스트

(Java) 프로그래머스 - 롤케이크 자르기

문제가 간단하지만 시간 제한을 맞추는게 꽤 까다로웠다. 인풋값이 크기 떄문에 O(n^2) 로직은 무조건 시간 초과가 나고, O(n log n) 이내로 작성해야 된다고 생각해서 최종적으로 O(n) 로직으로 풀이에 성공했다. 실패 코드 import java.util.*; import java.util.stream.Collectors; class Solution { public int solution(int[] topping) { int answer = 0; for(int i = 1; i < topping.length; i++) { Set set1 = Arrays.stream(Arrays.copyOfRange(topping, 0, i)) .boxed() .collect(Collectors.toSet()); S..

코딩 테스트

(Java) 프로그래머스 - 숫자 변환하기

처음에는 DFS를 이용해서 탐색하는 로직을 시도했다. 그러나 너무 많은 재귀 호출로 인한 스택 오버플로우와 시간 초과가 났다. 최소횟수를 찾는것과 최단거리를 찾는것이 똑같다는 생각이 들어 BFS로 변경했다. 더이상 스택 오버플로우는 나지 않았지만 시간 초과가 나는건 똑같았다. 한참을 고민하다 방문 배열과 똑같은 역할을 하는 Set을 추가해서 문제를 해결할 수 있었다. 최종 코드 import java.util.*; class Solution { public int solution(int x, int y, int n) { int answer = 0; answer = bfs(x, y, n); return answer; } public int bfs(int x, int y, int n) { Queue queue..

코딩 테스트

(Java) 프로그래머스 - 뒤에 있는 큰 수 찾기

제한사항을 보고 O(n^2) 로직으로는 100% 시간 초과가 날 것이라고 생각했다. 그래서 O(n) Queue를 이용한 로직을 한참 고민했는데, 결국 해결하지 못해 검색을 통해 힌트를 얻어 해결했다. 최종 코드 import java.util.*; class Solution { public int[] solution(int[] numbers) { int[] answer = new int[numbers.length]; Stack stack = new Stack(); for (int i = numbers.length - 1; i >= 0; i--) { while (!stack.isEmpty()) { if(stack.peek() > numbers[i]) { answer[i] = stack.peek(); brea..

코딩 테스트

(Java) 프로그래머스 - 연속 부분 수열 합의 개수

처음에는 단순히 슬라이딩 윈도우를 사용해서 풀려고 시도했다. 그러나 부분 수열의 크기가 고정되어 있지 않아서 풀이에 많은 시간이 걸렸다. 최종 코드 import java.util.*; class Solution { public int solution(int[] elements) { int answer = 0; // 부분 수열 크기 int size = 1; Set set = new HashSet(); // 부분 수열 크기가 elements 길이가 될때까지 반복 while (size

로승리
'프로그래머스' 태그의 글 목록 (4 Page)