전체 글
-
다이나믹 프로그래밍 정리Algorithm 2020. 9. 9. 16:36
다이나믹 프로그래밍 Dynamic Programming (DP) - 메모리를 적절히 사용하여 수행 시간을 비약적으로 증가시키는 방법 - 이미 계산된 결과 (작은 문제)는 별도의 메모리 영역에 저장하여 다시 계산하지 않도록 한다. - 다이나믹 프로그래밍의 구현은 일반적으로 두 가지 방식 (탑다운, 보텀업)으로 구성된다. 다이나믹 프로그래밍의 사용 조건을 만족하는지 먼저 확인 1. 최적 부분 구조 : 큰 문제를 작은 문제로 나눌 수 있다. 2. 중복되는 부분 문제 : 동일한 작은 문제를 반복적으로 해결한다. 다이나믹 프로그래밍 vs 분할정복 - 다이나믹 프로그래밍과 분할 정복은 모두 최적 부분 구조를 가질 때 사용할 수 있다. - 큰 문제를 작은 문제로 나눌 수 있으며 작은 문제의 답을 모아서 큰 문제를 해..
-
Level1) 문자열 내림차순으로 배치하기PS/programmers 2020. 9. 8. 17:06
import java.util.Arrays; import java.util.Collections; class Solution { public static String solution(String s) { Character[] answer = new Character[s.length()]; String answer1 = ""; for (int i = 0; i < answer.length; i++) { answer[i] = s.charAt(i); } Arrays.sort(answer, Collections.reverseOrder()); for (int i = 0; i < answer.length; i++) { answer1 += Character.toString(answer[i]); } return answ..
-
Level1) 문자열 내 p와 y의 개수PS/programmers 2020. 9. 8. 16:28
class Solution { boolean solution(String s) { String lower = s.toLowerCase(); int pcnt = 1; int ycnt = 0; for (int i = 0; i < lower.length(); i++) { if (lower.charAt(i) == 'p') { pcnt++; } if (lower.charAt(i) == 'y') { ycnt++; } } return (pcnt-1) == ycnt; } } - 성공 - p,y 둘 다 안나오는 경우도 있으니 pcnt = 1로 주고 풀이 class Solution { boolean solution(String s) { s = s.toLowerCase(); int count = 0; for (int i =..
-
Level1) 문자열 내 마음대로 정렬하기PS/programmers 2020. 9. 8. 16:15
import java.util.Arrays; import java.util.Comparator; class Solution { public String[] solution(String[] strings, int n) { Arrays.sort(strings, new Comparator() { @Override public int compare(String o1, String o2) { if (o1.charAt(n) == o2.charAt(n)) { return o1.compareTo(o2); } else { return o1.charAt(n) - o2.charAt(n); } } }); return strings; } } - 성공 - 저번에 Comparator 쓰는 문제를 풀어봤더니 문제읽고 이거 써야겠다는..