본문 바로가기

분류 전체보기139

[Algorithm] 6월 17일 알고리즘 연습 (프로그래머스 LEVEL2) - 에이젠 Lv. 2 쿼드압축 후 개수 세기 - 실패 참고한 풀이 https://devdange.tistory.com/entry/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%BF%BC%EB%93%9C%EC%95%95%EC%B6%95-%ED%9B%84-%EA%B0%9C%EC%88%98-%EC%84%B8%EA%B8%B0-for-JAVA-%EB%B6%84%ED%95%A0%EC%A0%95%EB%B3%B5 [프로그래머스] 쿼드압축 후 개수 세기 for JAVA 분할정복 문제설명 0과 1로 이루어진 2n x 2n 크기의 2차원 정수 배열 arr이 있습니다. 당신은 이 arr을 쿼드 트리와 같은 방식으로 압축하고자 합니다. 구체적인 방식은 다음과 같습니다. 당신이 압.. 2022. 6. 17.
[Algorithm] 6월12일 알고리즘 연습 (프로그래머스 level2) - 에이젠 Lv. 2 점프와 순간 이동 - 성공 내풀이(1) : 테스트케이스 1번빼고 모두 통과, but 효율성 테스트에서 메모리 초과로 실패 n이 10억 이상으로 가면서 배열 개수가 무지막지하게 늘어나기 때문이라고 추측. 재귀함수를 호출하는 방식으로 바꿔보자. import java.util.*; //일단 보자마자 풀이가 예상되지는 않는 문제... public class Solution { public int solution(int n) { int ans = 0; int[] arr = new int[n+1]; //1~n까지의 칸. arr[1] = 1; arr[2] = 1; arr[3] = 2; for(int i = 4; i 이전단계(짝수)비용 + 1 if(i%2 == 1) arr[i] = arr[i-1] + 1; .. 2022. 6. 17.
[Algorithm] 6월 11일 알고리즘 연습 (프로그래머스 LEVEL2) - 에이젠 Lv. 2 주식가격 - 실패 실패한 풀이 : 테스트케이스만 통과... 방법 자체는 틀린 것 같지 않아서 다시 해결해보아야겠다 class Solution { public int[] solution(int[] prices) { int[] answer = new int[prices.length]; Queue tempQ = new LinkedList(); Stack stack = new Stack(); int pre = 0; for(int i = 0; i < prices.length; i++){ if(pre prices[i]){ int poped = stack.pop(); tempQ.add(0); } tempQ.add(prices[i]); //모두 빼낸 후 빼낸만큼 0을 쌓기 while(tempQ.size() .. 2022. 6. 11.
[Algorithm] 6월9일 알고리즘 연습 (프로그래머스 LEVEL2) - 에이젠 Lv. 2 다리를 지나는 트럭 - 성공 방법이 떠오르지 않아서 다리와 트럭 객체를 만들어서 해결해보려했다. 하지만 ConcurrentModificationException 에러가 발생하였다. Map.remove()과정에서 발생하였을 것이다. 1. map의 Key로 활용한 트럭객체의 값이 변경되는 mutable한 객체이기때문에 문제가 발생하는 것 같다. -> 아무 객체나 Map의 Key값으로 쓰면 안 되겠다. 값이 변하는 객체X 2. 두번째 이유는 반복문이 도는 도중에 컬렉션값을 변경하였기때문에 발생하는 것 같다. https://imasoftwareengineer.tistory.com/85 자바 Collection Iterator - ConcurrentModificationException 자바에서 Ite.. 2022. 6. 9.
[Algorithm] 6월8일 알고리즘 연습 (프로그래머스 level2) - 에이젠 Lv. 2 위장 - 성공 테스트케이스를 통과해도 채점결과가 처참한 경우가 많은 것 같다... 내풀이(1) : 정확도 25% : 한가지 or 모든 악세사리를 착용하는 경우만 생각함. 세가지 카테고리중 두개만 선택하는 경우 같은 케이스를 배제하는 실수. 해결 : 각각의 카테고리 마다 케이스는 카테고리개수 중 하나를 선택 OR 선택하지 않는다의 경우의수가 존재. 모두 곱한 후 아무선택도 하지 않는 경우를 배제. class Solution { public int solution(String[][] clothes) { int answer = 0; Map map = new HashMap(); for(int i = 0; i< clothes.length ; i++){ if(map.containsKey(clothes[i.. 2022. 6. 8.
[Algorithm] 6월 7일 알고리즘 연습 (프로그래머스 level2) - 에이젠 Lv. 2 게임 맵 최단거리 - 실패 내풀이 (1) : 정확도 55% : DFS는 최단거리구하기에 적합하지 않다. BFS로 다시 풀어볼것. class Solution { int N = 0; int M = 0; int[][] map = {}; boolean[][] visited = {}; int count = 0; int[][] dir = {{1,0},{0,1},{-1,0},{0,-1}}; boolean isPossible = false; int shortest = 10000; public int solution(int[][] maps) { int answer = 0; N = maps.length; M = maps[0].length; map = maps; visited = new boolean[N][M];.. 2022. 6. 7.
[Algorithm]6월6일 알고리즘 연습 (프로그래머스 level2) - 에이젠 가장큰수 - 실패 내풀이(1) : 일부 테스트케이스만 통과하고 나머지는 런타임 오류. - 아마도 자료형 범위를 초과했기 때문이라 예상. // 정수를 이어 붙여 만들 수 있는 가장 큰 수 //정수 N개 중 N개를 뽑아서 중복을 허용하지 않고 순서가 있게 배열. class Solution { int N = 0; boolean[] used = {}; int[] selected = {}; int[] nums = {}; //생성된 숫자들 배열마지막에 정렬 필요 ArrayList list = new ArrayList(); public String solution(int[] numbers) { String answer = ""; used = new boolean[numbers.length + 1]; nums = nu.. 2022. 6. 6.
728x90