반응형

전체 글 126

[프로그래머스/Java] 모음사전(완전탐색 문제) 풀이

프로그래머스 알고리즘 고득점 Kit의 완전탐색 문제 중 하나인 '모음사전'을 자바로 풀어보았다. https://school.programmers.co.kr/learn/courses/30/lessons/84512 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   이 문제는 전에 대회나 코딩테스트에서 마주친 적이 있는 문제와 비슷했다. 그때는 이걸 완전탐색으로 접근할 생각을 못하고 규칙을 찾다가 예외가 너무 많아서 포기했는데, 알고 보니 완전탐색 문제였다. 완전탐색 문제라는 걸 인지하고 나니, 모든 경우의 수를 만드는 게 관건이지, 조건을 체크하는 건 크게 어렵지 않았다.  그래서 완전탐색으로 이 문제를 ..

[프로그래머스/Java] 피로도(완전탐색 문제) 풀이

프로그래머스의 알고리즘 고득점 Kit 문제 중 완전탐색 파트에 해당하는 '피로도' 문제를 풀어보았다. https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   이 문제는 프로그래머스의 코드챌린지에 참여했을 당시 만났던 문제 같다. (아닌가.. 다른 코테였나...?) 그때 이 문제를 해결하지 못했던 기억이 있다. 뭔가 이 문제에 접근할 효율적인 알고리즘을 찾느라, 정렬도 해보고 이것저것 시도를 해보다 결국 기본점수 정도 받고 시간이 부족해서 포기했던 것으로 기억하는데, 완전탐색 문제라는 걸 알고 꽤..

[프로그래머스/Java] 소수 찾기(완전탐색 문제) 풀이

프로그래머스 알고리즘 고득점 Kit의 완전 탐색 문제 중 하나인 소수 찾기 문제를 Java로 풀어보았다. https://school.programmers.co.kr/learn/courses/30/lessons/42839 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  이 문제는 완전탐색을 하면서 조건을 확인하는 것보다는 완전탐색을 할 수 있도록 모든 경우를 만드는 것이 관건인 문제였다. 사실 소수인지 아닌지 판단하는 건 간단하다. 아래 코드에 is_prime() 함수가 작성된 것처럼, 2 이상의 수로 자기 자신 외에 나눠지는 수가 하나라도 있으면 소수가 아니므로, 이를 파악해주기만 하면 된다. whil..

[프로그래머스/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; ..

728x90
반응형