본문 바로가기

Algorithm

(10)
[프로그래머스] 2xn타일링 문제풀이 유~명한 다이나믹 프로그래밍 문제. 메모제이션 방법을 이용해서 풀었다. 하 근데 이게 왜 f(n) = f(n-1)+f(n-2) 인지 명확하게 이해되지 않아 슬프구나 .. 흑흑 package OneDayOneCodingChallenge; import org.junit.Assert; import org.junit.Test; /** * @author seoyeon on 2020/09/28 * @project AlgorithmTest 다이나믹 프로그래밍.. 2xn 타일 */ public class Day16 { int memo[] = new int[60000]; public int solution(int n) { return f(n); } public int f(int n) { if (n == 1) { retu..
[알고리즘이론] 다이나믹 프로그래밍 에고... 멘탈 탈탈 털린 후 오랜만에 알고리즘 공부 0_0 다이나믹 프로그래밍을 졸업 후 오랜만에 들여다 보았다. 다이나믹 프로그래밍은 알고리즘이 아닌 문제접근방식 방식! 문제를 푸는 사고방식이다. 한마디로 정리하자면 다이나믹 프로그래밍의 기본은 재귀적 생각으로 문제풀이 + 불필요한 계산은 줄이기 재귀적으로 문제 풀기 => 귀납적으로 생각하기 작은 문제는 해결되어있다는 믿음을 가지고 큰 문제를 해결하기 예를 들어 피보나치 수열을 보자. f(0)=1, f(1)=1, f(n)=f(n-1)+f(n-2) (n>=2) 이를 코드로 나타내 보자 public int f(int n){ if(n==1) return 1; if(n==2) return 1; return f(n-2)+f(n-1); } -> 그런데 이런 풀이..
[프로그래머스]단어변환 최단거리 문제로 , 그래프를 그려서 풀이했다. 흑 나름 어려운 문제인데, 다른 풀이 보지 않고 한번에 풀어서 왕 뿌듯 뿌듯.. 취중 코딩 상태여서 , 막 대강대강 풀었는데 흐흐흐 package OneDayOneCodingChallenge; import java.util.LinkedList; import java.util.Queue; import org.junit.Assert; import org.junit.Test; /** * @author seoyeon on 2020/09/20 * @project AlgorithmTest * 진짜 개뿌듯하다.. * BFS.. 남의 풀이 보지 않고 혼자 풀었다. ㅠ */ public class Day15 { public int solution(String begin, S..
[프로그래머스]타켓 넘버 이 문제는.. 조금 생각하다보니 재귀함수로 풀어야 겠단 생각이 들었다 . package OneDayOneCodingChallenge; import org.junit.Assert; import org.junit.Test; /** * @author seoyeon on 2020/09/15 * @project AlgorithmTest */ public class Day12 { public int solution(int[] numbers, int target) { return DFS(numbers, target, 0, 0); } public int DFS(int[] numbers, int target, int index, int num) { if (index == numbers.length) { if (num =..
[프로그래머스]위장 HashMap이란? Map인터페이스의 한종류로써 Key와 Value 값으로 데이터를 저장하는 형태 Map 종류 : Hashtable, HashMap, LinkedHashMap, SortedMap, TreeMap 등등 그 중 Hash Map은 해싱 검색방법을 이용하기 때문에 뛰어난 성능을 보여줌 . 주요 method map.put(Key, Value) map.remove(key) map.size() map.get(key) map.clear() map.clone() map.containsKey(key) : Key값을 가진 엘리먼트가 있으면 true map.containsValue(value) : Value값을 가진 엘리먼트가 있으면 true package OneDayOneCodingChallenge; imp..
[프로그래머스]문자열 내 마음대로 정렬하기 1. Arrays.sort()와 Collections.sort()를 사용할 줄 알아야 함. 2. Comparable과 Comparator의 차이 알기 Comparable : 객체 간의 일반적인 정렬이 필요할 때, Comparable 인터페이스를 확장해서 정렬의 기준을 정의하는 compareTo() 메서드를 구현한다. Comparator : 객체 간의 특정한 정렬이 필요할 때, Comparator 인터페이스를 확장해서 특정 기준을 정의하는 compare() 메서드를 구현한다. package OneDayOneCodingChallenge; import static org.junit.Assert.assertArrayEquals; import java.util.Arrays; import java.util.Comp..
[프로그래머스]다리 위를 지나는 트럭 package OneDayOneCodingChallenge; import static org.junit.Assert.assertEquals; import java.util.LinkedList; import java.util.Queue; import org.junit.Test; public class Day6 { public int solution(int bridge_length, int weight, int[] truck_weights) { int answer = 0; Queue trucksOnBridge = new LinkedList(); int sum = 0; int time = 0; for (int t : truck_weights) { while (true) { time++; if (trucksOn..
[프로그래머스]기능개발 이건 찾아봐도 획기적인 풀이법은 없는 것 같아 반 노가다로 푼 문제 .. Queue나 Stack을 이용하지 않고 ArrayList만으로도 사실 풀 수 있다. package OneDayOneCodingChallenge; import static org.junit.Assert.assertArrayEquals; import java.util.LinkedList; import java.util.Queue; import org.junit.Test; /** * @author seoyeon on 2020/09/08 * @project AlgorithmTest */ public class Day5 { public int[] solution(int[] progresses, int[] speeds) { int[] temp..