본문 바로가기

Java/알고리즘63

뒤에 있는 큰 수 찾기 문제를 보고 이중 for문으로 풀수 있겠다 싶어서 금방 풀었다. public static int[] solution(int[] numbers) { int[] answer = new int[numbers.length]; //해당 수 뒤를 순회하면서 자기보다 큰수발견하면 바로 해당인덱스에 그 수 넣기 //만약 발견하지 못하면 해당인덱스에 -1 for(int i = 0; i < numbers.length; i++){ for(int j = i+1; j < numbers.length; j++){ if(numbers[i] < numbers[j]){ answer[i] = numbers[j]; break; }else{ answer[i] = -1; } } } answer[answer.length-1] = -1; retu.. 2023. 11. 22.
주식 가격 문제를 처음 보고 설명이 이게 단가? 했다. 뭔소린가했더니 첫1초 가격 1일때, 나머지 네번중에 1보다 작은가격은 없으니 떨어지지 않은것이므로 4, 2초일때 가격 2도 마찬가지로 나머지 세번중에 작은가격이 없으니 3 이런식이다. 그래서 스택으로 풀려다 큐로도 풀수 있을거같아서 큐로 풀었다. ㅇ 1트 public static int[] solution(int[] prices) { int[] answer = {prices.length}; Queue priceQueue = new LinkedList(); for(int price : prices){ priceQueue.add(price); } int num = 0; //peek == 맨앞에있는거 반환 //poll == 맨앞에있는거 반환하고 삭제 while(pr.. 2023. 11. 21.
주차 요금 계산 문제 설명 문제가 엄청 길다. 풀기위해서 먼저 차량번호가 낮은 순서대로, 누적시간을 알아낸뒤 계산을 하면 된다. ㅇ 코드 public static int[] solution(int[] fees, String[] records) { Map parkingTimes = calculateParkingTime(records); //차량번호를 낮은순으로 정리하기 위한 TreeMap TreeMap sortedParkingTimes = new TreeMap(parkingTimes); //answer 에 누적시간만 차례로 넣기. int[] answer = sortedParkingTimes.values().stream() .mapToInt(Integer::intValue) .toArray(); //누적시간 구한거에 계산식.. 2023. 11. 8.
더맵게(Priority Queue, Min Heap) 최근에 풀던 문제보다 정답률이 더 낮은문젠데, 왜 이렇게 쉽지? 싶었다. 항상 처음에는 오 쉽네ㅋㅋ했긴했는데 막상 풀다보면 어려운 그런 문제들이 많았어서 이것도 그런가보다 했는데 풀다보니 진짜 쉬워서 왜쉽지?? 하고 테스트를 돌려보니.. 효율성테스트가 있는 문제였다. 그럼 그렇지 내가 처음 푼 코드를 보자. public static int solution(int[] scoville, int K) { //몇번 믹스할지 int cnt = 0; //moreThanK가 true를 반환할때까지 mix해주고 카운트 갯수세줌. while (!moreThanK(scoville, K)) { scoville = mix(scoville); cnt++; //만약 스코빌이 하나남았는데도 K보다 작다면 -1 반환해줌. if (s.. 2023. 11. 2.