본문 바로가기

Algorithm

(28)
[프로그래머스] 뉴스 클러스터링 (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..
[Java] LinkedList 사용법 정리 1. LinkedList 란? 2. LinkedList vs ArrayList public class LinkedList extends AbstractSequentialList implements List, Deque, Cloneable, Serializable public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, Serializable LinkedList와 ArrayList는 위와 같이 인터페이스를 구현하고 있습니다. 한가지 다른건 Deque를 구현한다는 점이 ArrayList와 다릅니다. 따라서 Java의 Queue에서 지원하는 메소드를 사용할 수 있다는게 특징입니다. Queue 지원 메소드(FIFO ..
[C++] Vector Container 사용법 정리 1. Vector Container란 C++ STL에 포함된 자료구조로 동적할당되어 작동하며 메모리를 효율적으로 관리할 수 있는 container입니다. 2. 사용법 1) 초기화 #include // vector 변수명; vector intVector; vector stringVector; // vector 변수명(숫자); // 숫자만큼의 크기로 vector가 생성되고 각 자료형의 초기값으로 전체 설정된다 vector intVector(10); // vector 생성과 동시에 초기화 vector stringVector(3) = {"a", "b", "c"}; vector intVector(2, 3); // 크기는 2, 값은 3으로 초기화 // vector 복사 초기화 vector intVector1(int..
[프로그래머스] 등굣길 (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..