본문 바로가기

Algorithm/Algorithm Test

(26)
[프로그래머스] 뉴스 클러스터링 (Java) 카테고리 리스트 나만의 카테고리 로직 짜기 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/17677 요점 중복이 허용되는 합집합, 교집합 참고 int, double 과 같은 자료형 연산 주의 해야한다 정규식 사용법에 대해서 알아야 한다 Java에서 리스트를 사용할 때 복사 방식에 유의 해야 한다. (Call by value VS Call by reference) 참고 지식 List 메서드 정규식 풀이 (Java) import java.util.*; import java.util.regex.*; class Solution { public int solution(String str1, String str2) { int answer = 0; str1 = ..
[프로그래머스] 야근 지수 (Java) 카테고리 큐, 리스트 나만의 카테고리 정렬해야하는 큐 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/12927 요점 배열이나 리스트를 사용하며 지속적으로 정렬을 해야한다면 PriorityQueue를 고려하자 제곱이나 수학적 함수를 사용할 시 자료형을 확인하자 참고 지식 Priority Queue 사용법 Math.* 풀이 (Java) import java.util.*; class Solution { public long solution(int n, int[] works) { long answer = 0; PriorityQueue workQueue = new PriorityQueue(Collections.reverseOrder()); for (int w..
[프로그래머스] 최고의 집합 (Java) 카테고리 ? 나만의 카테고리 로직 짜기 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/12938 요점 같은 합이 되는 수들의 곱이 최대 값이려면 각 값의 편차가 제일 작아야한다. 참고 지식 로직 떠올리기 풀이 (Java) import java.util.*; class Solution { public int[] solution(int n, int s) { int quotient = s / n; int remainder = s % n; if (quotient > 0) { int[] answer = new int[n]; for (int i = 0; i < n; i++) { if (n - remainder == i) { quotient++; } answer..
[프로그래머스] 소수 찾기 (Java) 카테고리 완전 탐색 나만의 카테고리 소수 찾기, 숫자 조합해서 만들기 문제 링크 http://programmers.co.kr/learn/courses/30/lessons/42839?language=java 요점 에라토스테네스의 체를 통해 소수 찾기를 진행해야한다 숫자를 쪼개서 전체 숫자를 만드는 것은 역으로 쪼개진 숫자를 타겟이 모두 포함하는지를 확인하는 것이 편하다 참고 지식 에라토스테네스의 체 Arrays.sort 메소드 List에서 remove 시에는 처음 찾아진 요소 제거 Boolean 초기값 풀이 (Java) import java.util.*; class Solution { public int solution(String numbers) { int answer = 0; String[] array..
[프로그래머스] 보석 쇼핑 (Java) 카테고리 탐색, 이분탐색(?) 나만의 카테고리 전체 포함하는 최적해 찾기, 리스트, 맵 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/67258 요점 Set, Map, LinkedList 등을 활용할 수 있어야 한다. 자바 유틸 클래스에서 제공하는 sort 혹은 Collections의 min, max를 사용할 때는 효율 문제를 염두에 둬야한다 참고 지식 Set 사용법(Java) Map 사용법(Java) Collections 메소드 풀이 (Java) import java.util.*; class Solution { public int[] solution(String[] gems) { HashSet gemSet = new HashSet(); for (S..
[프로그래머스] 등굣길 (C++, Java, Python) 카테고리 동적계획법(Dynamic Programming) 나만의 카테고리 이차배열, 최단거리 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42898 요점 재귀법, DP의 방법이 생각나지만 효율성 테스트를 통과하기 위해서는 DP를 택해야한다. 1,000,000,007 정도로 나누는 문제는 long을 염두해야한다. 참고 지식 벡터 사용법(C++) (http://marrrang.tistory.com/7) Java foreach, 배열 (Java) 풀이 (C++) #include #include using namespace std; int solution(int m, int n, vector puddles) { long root[101][101]; lon..