전체 글 239

백준-1149번/RGB거리 (java)

우선 각각의 집의 RGB 비용을 저장 할 이차원 배열 RGB[n][3]을 만들어준다. 그리고 RGB와 크기가 같은 이차원 배열 dp[n][3]을 만들어준다. dp문제는 조건에 따른 경우의 수를 누적해 오면서 맨 마지막 경우에 따른 뒤의 경우를 생각해봐야 한다. 3 26 40 83 49 60 57 13 89 99 이렇게 3개의 집이 있다고 생각해보자. 맨 마지막 집이 빨간색인 경우 ==> 이 전 집은 파랑OR초록이 왔을때의 최솟값 맨 마지막 집이 파란색인 경우 ==> 이 전 집은 빨강OR초록이 왔을때의 최솟값 맨 마지막 집이 초록색인 경우 ==> 이 전 집은 빨강OR파랑이 왔을때의 최솟값 이 때 전전 집(dp[n-2][?])을 생각하지 않아도 되는 이유 : 전전 집도 위 식과 똑같은 방식으로 앞 뒤 집과 ..

알고리즘/백준 2024.02.22

HashMap

HashMap이란? : 자료를 쌍으로 관리하는데 필요한 메서드가 정의 되어있는 Map 인터페이스를 구현한 클래스중 가장 많이 사용하는 클래스이다. HashMap의 기본 구조 HashMap HashMap은 key와 key값에 따른 value로 이루어져있다. HashMap의 주요 메서드 1) put(key,value) ==>HashMap에 key에 상응하는 value값을 추가해준다. 2) remove(key) ==> HashMap에서 key에 상응하는 value값을 지워준다. 3) keySet() ==> 주로 Iterator를 이용해서 HashMap의 전체를 순회할때 사용한다. 4) containsKey(key) ==> HashMap에 매개변수로 받은 key값을 가지는 value가 있으면 true, 아니면 ..

자바 2024.02.21

Iterator

Iterator란? : Java 컬렉션 프레임워크에서 컬렉션 요소들을 순회하면서 접근 할 수 있는 인터페이스이다. Iterator의 주요 메서드 1) hashNext() ==> 다음 요소가 있으면 true를 반환 2) next() ==> 다음 요소를 반환한다. 3) remove() ==> 컬렉션에서 현재 요소를 제거한다. 4) previous() ==> 이 전 요소를 반환한다. Iterator를 사용하기 위해서는 import를 해줘야 한다. import java.util.Iterator; 사용 예시 public class IteratorTest { public static void main(String[] args) { List list = new ArrayList(); for(int i = 0;i

자바 2024.02.21

백준-2225번/합분해 (java)

K개의 숫자로 N을 만들어야한다. 이 문제의 핵심적으로 구현해야 하는 로직은 숫자 X가 더해진다면 K-1개의 숫자로 N-X를 만들어야 한다는 것이다. ex) N=2인경우(k=2) 맨 앞 수가 0이 올때 + (남은 한자리로 2를 만들어야 한다.(k=1,N=2)) 맨 앞 수가 1이 올때 + (남은 한자리로 1을 만들어야 한다.(k=1,N=2)) 맨 앞 수가 2가 올때 + (남은 한자리로 0을 만들어야 한다.(k=1,N=2)) 이를 점화식으로 표현한 코드는 다음과 같다. for(int i=2; i

알고리즘/백준 2024.02.20

백준-1912번/연속합 (java)

크기가 n인 정수 배열 arr[n] 에서 연속된 수의 최대값을 구하기 위해 크기가 n인 정수 배열 dp를 하나 만들어 준다. dp[i] = arr[i]에서의 연속된 최대 합 최대 값이 될수 있는 경우는 총 3가지이다. 1) i-1에서의 최대 연속합 + arr[i] 2) 연속된 두 수의 합이 최대인 경우 (arr[i-1]+arr[i]) 3) arr[i]가 최대합인 경우 이를 점화식으로 만들면 코드는 다음과 같다 for(int i=0; i

알고리즘/백준 2024.02.19