본문 바로가기
반응형

전체 글96

프로그래머스 문자열 압축 문자열 압축 https://programmers.co.kr/learn/courses/30/lessons/60057 문제 설명 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 더 짧은 문자열로 줄여서 표현하는 알고리즘을 공부하고 있습니다.간단한 예로 "aabbaccc"의 경우 "2a2ba3c"(문자가 반복되지 않아 한번만 나타난 경우 1은 생략함)와 같이 표현할 수 있는데, 이러한 방식은 반복되는 문자가 적은 경우 압축률이 낮다는 단점이 있습니다. 예를 들면, "abcabcdede"와.. 2021. 9. 15.
[백준] p9095 1, 2, 3 더하기 : 동적계획법 문제 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 1+1+1+1 1+1+2 1+2+1 2+1+1 2+2 1+3 3+1 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다. 출력 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. 예제 입력 1 3 4 7 10 예제 출력 1 7 44 274 동적계획법은 문제를 작은 문제로 쪼개어, 작은 문제의 해답을 이용해 큰 문제를 해결하는 방법이다. '작은 문제들의.. 2021. 9. 14.
제네릭 클래스 Generics, 제너릭 클래스 메서드, <T> '제너릭 generic'을 잘 알고 썼다고 생각했지만, 모르겠는 것들이 점차 생기면서 내가 잘 알고 있지 못하다는 생각이 들어 차근차근 알아보려고 한다. 먼저 제네릭 클래스의 코드를 보자. class FruitBox{ Object item; public void store(Object item){ this.item = item; } public Object pullOut(){ return item; } } class FruitBox{ //제네릭 클래스를 사용하려는 형태. 타입 T에 꼭 써워야 한다. T item; public void store(T item){ this.item = item; } public T pullOut(){ return item; } } 는 제네릭 클래스를 사용하려는 형태이고, T.. 2021. 9. 13.
[java] 이중 콜론 연산자 :: 이중 콜론 연산자 (Double Colon Operator) 람다(Lamda)식과 함께 살펴보려고 한다. 람다식과 이중 콜론 연산자를 이용하면 간결하게 표현할 수 있는데, 예를 들어 comparator를 생성해보자 #1 lamda Comparator c = (Computer c1, Computer c2) -> { c1.getAge().compareTo( c2.getAge() ) }; #2 lamda Comparator c = (c1, c2) -> { c1.getAge().compareTo( c2.getAge() }; #3 :: Comparator c = Comparator.comparing(Computer::getAge()); 위에 두 람다식보다 이중콜론 연산자가 훨씩 읽기 쉽고 짧게 표현할 수 있다. .. 2021. 9. 12.
그리디 알고리즘 greedy 알고리즘은 매 결정 순간 비용이 적은 것을 선택하는 알고리즘이다. 그리디 알고리즘은 이전의 탐욕 선택이 이후 선택에 영향을 주지 않는 문제에서 자주 사용된다. (독립적) 왜냐, 최적해에 근사한 값일 뿐 최적해를 만족하지 못한다. A-B가 B-C경로에 영향주지 않음. 또, 전체 최적해가 부분 문제에 대해서도 최적해를 만족하는 문제에서 사용된다. A-B 와 B-C은 전체인 A-C최적해의 부분 문제가 되기 때문에 그리디 알고리즘을 적용하기 적절한 문제다. 그렇지만 속도가 매우 빨라 동적계획법과 그리디 알고리즘이 혼용되어 쓰이기도 한다. 이제 그리디 알고리즘 풀어야지... 참고한 블로그 st-lab.tistory.com/143 2021. 4. 26.
백준알고리즘:p9663 N-Queen 분류: 백트래킹 ▶문제 먼저 체스게임에서 퀸의 능력은 원하는 만큼 상하좌우 대각선으로 이동할 수 있다. (다만, 한 방향으로만 가야됨) N*N체스판에서 퀸 N개가 서로 공격하지 않도록 놓는 방법의 갯수를 출력해야 한다. 아래 사진처럼 퀸이 움직인다. 즉 체스말이 현재 있는 곳에서 갈 수 있는 모든 곳을 x표시하고, 다른 말이 있는게 가능한 곳에서 또 x표시하는 반복을 한다. ▶코드 //백준알고리즘 제출시 클래스 이름은 Main으로 바꿔야 됨 package backtracking; import java.util.Scanner; public class p9663_1 { public static int N; public static int[] arr; public static int count; //가로줄 하.. 2021. 4. 9.
반응형