전체 글 123

[프로그래머스/Java] H-Index(정렬 문제)

프로그래머스 알고리즘 고득점 Kit의 정렬 파트 문제 중 하나인 H-Index를 자바로 풀어보았다. https://school.programmers.co.kr/learn/courses/30/lessons/42747# 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   처음에는 너무 간단해 보여서 쉽게 풀겠구나 하고 접근하여 제출했다. 하지만 생각보다 신경 써야 할 조건이나 반례가 많았다. 처음에는 그냥 정렬해 준 후, if(i+1 >= cites[i]) 조건만 충족하면 되는 거 아닌가?라고 생각해서 그렇게 코드를 작성했다.  그리고 만난 반례가 [11, 10, 1] 이었다. 내가 한 논리대로라면 1이 답..

[프로그래머스/Java] 가장 큰 수(정렬 문제) 풀이

프로그래머스 알고리즘 고득점 Kit의 정렬 파트 문제 중 하나인 '가장 큰 수'를 자바로 풀어보았다.https://school.programmers.co.kr/learn/courses/30/lessons/42746# 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   비슷한 종류의 방법을 계속 생각했지만, 두 문자열을 합쳐서 비교하는 것을 떠올리지 못해서 사소한 오류에 부딪히다가 결국 두 문자열을 합쳐서 비교하는 풀이에 이르렀다.  우선 int 값을 String으로 바꾸어서 다루었다. 각 숫자들의 각 자릿수들을 더 쉽게 다루기 위함이었다. 그리고 두 문자열을 합친 후 둘 중 큰 숫자를 파악했다. 두 문자..

[API] 알아두면 유용한 응답코드

200번대 코드 ≫ 성공적인 응답200 OK: 요청이 성공적으로 수행ResponseEntity.ok("Succeed");201 Created: 요청 성공적으로 수행 + 새로운 리소스 생성ResponseEntity.status(HttpStatus.CREATED).body("Created");  400번대 코드 ≫ 요청 실패 (클라이언트의 문제)400  Bad Request: 요청한 값이 잘못되어 실패ResponseEntity.status(HttpStatus.BAD_REQUEST).body("Failed")403 Forbidden: 권한이 없어서 실패ResponseEntity.status(HttpStatus.FORBIDDEN);404 Not Found: 요청값으로 찾는 리소스가 없어서 실패ResponseEn..

[프로그래머스/Java] 이중우선순위큐(heap 문제) 풀이

프로그래머스 알고리즘 고득점 Kit의 heap 문제 중 하나인 이중우선순위큐를 자바로 풀어보았다. https://school.programmers.co.kr/learn/courses/30/lessons/42628 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   처음에는 heap 문제이니까, 어떻게 해서든 자바에 내장된 priority queue를 이용해서 풀어보려 했다. priority queue 두 개를 활용하여, 각각 오름차순, 내림차순으로 설정해 두고 시도해 봤는데, 결국 peek 값에만 접근할 수 있다는 한계에 부딪혀 실패했다.  그래서 그냥 insert하면 정렬이 되고, 양방향의 peek 값..

[프로그래머스/Java] 디스크 컨트롤(heap 문제) 풀이

프로그래머스 알고리즘 고득점 Kit의 heap 파트 문제 중 하나인 '디스크 컨트롤'을 Java를 사용해서 풀어보았다. https://school.programmers.co.kr/learn/courses/30/lessons/42627 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   자바에서는 heap 자체를 제공하지는 않지만, 기능이 같은 PriorityQueue를 제공한다. 따라서 PriorityQueue를 이용해서 heap을 구현해 줬다.  우선 일 정보를 담을 Job 클래스를 선언해줬다. 이때 Comparable을 implement 해줬는데, 그 이유는 CompareTo 메서드를 override..

[Heap] C언어로 Max Heap 구현하기

HEAP이란?Complete Binary Tree에 해당하는 자료구조로, Max Heap과 Min Heap이 있다. Complete Binary Tree라는 것은, Tree의 각 레벨 노드들이 왼쪽에서 오른쪽으로 채워지는 Binary Tree를 의미한다. 만약 아래의 왼쪽 그림에서 45 노드가 62의 왼쪽 자식이 아닌 오른쪽 자식 노드이거나, 24 노드가 존재하지 않았다면 왼쪽 그림을 Complete 하다고 볼 수 없을 것이다. 하지만 현재 왼쪽 그림은 level 0과 level1은 모든 자리가 채워져 있고, level2의 경우 왼쪽부터 채워져 있기 때문에 Complete Binary Tree라고 볼 수 있다.  Max Heap은 모든 부모노드가 자식노드들보다 큰 경우이고, Min Heap은 모든 부모노..

[프로그래머스/Java] 주식가격(스택/큐) 풀이

프로그래머스 알고리즘 고득점 Kit의 스택&큐 파트 문제 중 하나인 '주식가격' 문제를 Java로 풀어보았다. https://school.programmers.co.kr/learn/courses/30/lessons/42584 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  내가 푼 코드는 아래와 같은데, 풀면서 stack&queue를 활용하지 못하기도 했고, 시간복잡도도 O(N^2)로 효율적이지 않아서 다른 방법을 찾아보려 했다. class Solution { public int[] solution(int[] prices) { int len = prices.length; ..

[프로그래머스/Java] 다리를 지나는 트럭(스택/큐) 풀이

프로그래머스 알고리즘 고득점 Kit 스택&큐 파트 중 '다리를 지나는 트럭' 문제를 Java로 풀어보았다.https://school.programmers.co.kr/learn/courses/30/lessons/42583 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  on_bridge라는 이름의 queue를 만들어서 트럭이 다리 위에 올라가는 상황에서 queue에 트럭의 weight를 add 해줬다. add 해줄 때 cur_weight에 무게를 더해주고, poll 할 때 빼주어서, 현재 다리 위에 올라가 있는 트럭들의 무게의 합을 확인한다. 만약 add 해줄 요소가 없다면 0을 add 해줘서, 다리가 ..

[프로그래머스/Java] 프로세스(스택/큐) 풀이

알고리즘 고득점 Kit의 스택&큐 문제 중 하나인 '프로세스'를 자바로 풀어보았다. https://school.programmers.co.kr/learn/courses/30/lessons/42587 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   우선 큐를 만들어서 인덱스를 모두 넣어주는 것으로 풀이를 시작했다. 그다음, 현재 남아있는 인덱스 중 최댓값을 찾는 것으로 초기 설정을 마쳤다. 그다음 while문을 통해서, 현재 poll 된 인덱스의 priority 값이 최댓값이 아니면 다시 넣어주고, 최댓값이라면 poll 된 채로 두고, cur_max를 그다음 max 값으로 바꾸는 작업을 반복한다. 현재..

[프로그래머스/Java] 기능개발(스택/큐) 풀이

프로그래머스 알고리즘 고득점 Kit의 스택&큐 문제 중 하나인 '기능 개발'을 자바로 풀어보았다. https://school.programmers.co.kr/learn/courses/30/lessons/42586 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  아래와 같이 코드를 작성했다. 현재 element(i번째 element)가 100 이상이 되기 위해서 필요한 일수를 구하고, 그 일수에 이미 완성되어 있는 뒤 기능들의 수를 세어주는 방식을 사용했다.다른 사람들의 풀이를 보니, 일수를 구해준 다음 해당 일수의 index에 1을 더해주는 방식을 사용하기도 했다. 하지만 이렇게 하면 코드는 훨씬 간단..

728x90