본문 바로가기

Algorithm14

[Algorithm] 6월 18일 알고리즘 연습(프로그래머스 LEVEL2) - 에이젠 Lv. 2 올바른 괄호 - 성공 //스택 이용 class Solution { boolean solution(String s) { boolean answer = true; char[] arr = s.toCharArray(); // [ (,),(,)] Stack stack = new Stack(); for(char ch : arr){ if(ch == ')' && !stack.isEmpty() && stack.peek() == '('){ stack.pop(); continue; } stack.push(ch); } if(stack.isEmpty()){ answer = true; }else{ answer = false; } return answer; } } Lv. 2 다음 큰 숫자 - 실패 내풀이 (1) : 정확.. 2022. 6. 18.
[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.
[Algorithm] 6월2일 알고리즘 연습(프로그래머스 Level2) - 에이젠 Lv. 2 기능개발 - 성공 처음에 한 실수 -> 첫번째 기능보다 배포까지 남은 기간이 짧기만하면 모두 배포될 기능 개수에 추가시켜버리는 실수. level2부터는 이런 실수를 자주하게 될 것으로 예상. -> 중간에 기능을 이해하면서 코드를 침착하게 고쳐나가는 습관들이기 연습. import java.util.*; import java.io.*; class Solution { //개발은 순서에 상관없음. //배포는 앞에꺼 먼저 배포 //progresses => 작업진도 [93, 30, 55] //speeds => 개발 속도 [1, 30, 5] //배포마다 몇개의 기능이 배포되는지 return //남은 일수 : int //앞에꺼가 배포될때까지 기다림. //첫번째 작업의 남은 일수 & 남은 일수보다 짧게 남은.. 2022. 6. 2.
728x90