카테고리 102

자바 알고리즘 부분집합 구하는 방법 CheetSheet

1. 재귀함수 public static void dfs(int idx,int sum) { if(idx >= N){ if(sum == S) result++; return; } dfs(idx + 1, sum + arr[idx]); dfs(idx + 1, sum); } 고르고 안고른 1/2 의 모든 부분집합을 따져본 방법이다. [1,2,3,4]가 있을 경우, 1 2 3 4 (O,X) (O,X) (O,X) (O,X) 의 경우를 생각해서 고른 경우와 안고른 경우를 생각해보면 된다. public static void dfs(int[] array, int idx, int choiceCnt, String result, int K){ if(choiceCnt == 6){ System.out.println(result); ..

[등차수열] 백준 등차수열 변환 - 17088

[Gold V] 등차수열 변환 - 17088 문제 링크 성능 요약 메모리: 27856 KB, 시간: 336 ms 분류 브루트포스 알고리즘, 수학 문제 설명 크기가 N인 수열 A = [A1, A2, ..., AN]이 있을 때, 모든 1 ≤ i < N에 대해서, Ai+1-Ai가 모두 일치하면 등차수열이라고 한다. 예를 들어, [3], [6, 6, 6], [2, 8, 14, 20], [6, 4, 2]는 등차수열이고, [4, 5, 4], [6, 3, 1]은 등차수열이 아니다. 수열 B = [B1, B2, ..., BN]을 등차수열로 변환하려고 한다. 각각의 수에는 연산을 최대 한 번 적용할 수 있다. 연산은 두 가지가 있는데, 1을 더하거나 1을 빼는 것이다. 수열 B를 등차수열로 변환하기 위해 필요한 연산 횟..

Java 9 ~ 17까지 도입할만한 유용한 기능과 예시

Java 9 인터페이스의 private 메소드: 인터페이스에서도 private 메소드를 선언할 수 있게 되었습니다. 이를 통해 코드의 재사용성을 높일 수 있습니다. 메소드 구현의 세부 사항 숨기기: private 메소드는 인터페이스 외부에서는 접근할 수 없으므로, 메소드의 구현 세부 사항을 숨기고 추상화 수준을 높일 수 있습니다. 이는 캡슐화 원칙을 더 잘 지키는 데 도움이 됩니다. 인터페이스의 안정성 향상: private 메소드는 인터페이스의 공개 API의 일부가 아니므로, 이를 변경하더라도 인터페이스를 구현하는 클래스들에게 영향을 미치지 않습니다. 따라서 인터페이스의 안정성을 향상시키는 데 도움이 됩니다. public interface MyInterface { default void myMethod(..

개발언어/JAVA 2023.07.20

코틀린 vs 자바

자바가 있는데 굳이 코틀린을 배워야해? 라고 생각한 뒤, 생각을 고쳐먹고 최근 코틀린을 배우기로 생각했습니다. 그래서 코틀린이 자바보다 좋은 이유들을 찾고 있습니다.그것에 대한 정리글입니다. 간결한 문법: Kotlin은 더 간결한 문법을 제공하여 코드를 더 간결하게 작성할 수 있습니다. 예를 들어, Nullable 타입, 확장 함수, 데이터 클래스 등의 기능을 활용하여 코드를 더 간단하고 명확하게 작성할 수 있습니다. // Java 코드 String name = "John"; if (name != null) { System.out.println(name.toUpperCase()); } // Kotlin 코드 val name: String? = "John" println(name?.toUpperCase()..

개발언어/KOTLIN 2023.07.18

알고리즘에서 비트마스크로 경우의 수 따지는 방법

때로 브루트포스에서 경우의 수 (부분집합)를 따지는 상황이 왕왕 발생한다. 그런 상황에서 요긴하게 쓰이는 bitmask로 경우의 수 따지기, 유용한 상황 처리에 대해서 정리하려고 한다. 비트마스크(Bitmask)는? 이진수로 표현된 비트들의 집합으로, 각 비트가 특정 상태를 나타냅니다. 비트마스크를 사용하면 집합의 부분집합을 효과적으로 나타낼 수 있고, 이를 활용하여 경우의 수를 따질 수 있습니다. 기본적인 사용법 public class BitmaskExample { public static void main(String[] args) { int n = 3; // 비트 수 int total = 1 예를 들어 3개의 비트를 사용한다면, 000,001,010,011,100,101,110,111 과 같이 2^..