본문 바로가기

728x90

분류 전체보기

(219)
[백준][2231] 분해 합 https://www.acmicpc.net/problem/2231문제 풀이1. N의 생성자를 구한다는 것은 반대로 분해합이 N 이 되는 수를 구하는 것으로 접근한다.2. 백만개의 자연수에 대해서 분해합을 각각 구하여 N 과 같은 경우의 수 중 최소 값을 찾는다.3. 각 자리수의 합을 구할 때 kotlin string 에서 제공하는 sumOf 를 이용하면 각자리 수의 합을 쉽게 구할 수 있다.코드import java.io.BufferedReaderimport java.io.InputStreamReaderfun main(args: Array) { val br = BufferedReader(InputStreamReader(System.`in`)) val N = br.readLine().toInt()..
[백준][2798] 블랙잭 https://www.acmicpc.net/problem/2798문제 풀이1. 3중 for 문을 이용하여 카드를 세 장 뽑는다.2. 뽑은 세 장의 카드 합이 M 보다 작거나 같고 현재 result 값보다 크면 result 에 저장한다.3. result 를 출력 한다.코드import java.io.BufferedReaderimport java.io.InputStreamReaderfun main(args: Array) { val br = BufferedReader(InputStreamReader(System.`in`)) val (N, M) = br.readLine().split(" ").map { it.toInt() } val numbers = br.readLine().split(" ").m..
[Algorithm] Brute Force 브루트 포스는 모든 경우의 수를 탐색하면서 요구 조건을 충족하는 결과를 가져오는 알고리즘이다.모든 경우의 수를 100% 탐색하기 때문에 무조건 정답을 얻을 수 있다.브루트 포스 알고리즘은 2가지 종류가 있다.1. 선형 구조 : 순차 탐색2. 비선형 구조 : BFS, DFS, 백트래킹모든 문제를 브루트 포스 알고리즘으로 풀 수 없다. 해당 알고리즘은 설명에서 말한 것과 같이 모든 경우를 탐색하기 때문에시간 복잡도나 메모리를 넘어서는 경우가 발생한다.주어지는 문제가 브루트 포스로 해결이 가능한 지 확인하여 적용 유무를 판단해야 한다. - 브루트 포스 문제 (BOJ)https://www.acmicpc.net/step/22
[백준][2501] 약수 구하기 https://www.acmicpc.net/problem/2501 2501번: 약수 구하기첫째 줄에 N과 K가 빈칸을 사이에 두고 주어진다. N은 1 이상 10,000 이하이다. K는 1 이상 N 이하이다.www.acmicpc.net문제 풀이1. 1부터 N 까지 루프를 돌려 (N % index == 0) 인 index 를 result list 에 저장한다.2. result list 의 크기가 K 보다 작으면 조건에 따라 0을 출력 한다.3. result list 의 크기가 K 보다 크거나 같으면 (K - 1)번째의 값을 출력한다.코드import java.io.BufferedReaderimport java.io.InputStreamReaderfun main(args: Array) { val br = ..
[M1/M2] Android gRPC 적용 가이드 android gRPC 를 사용하기 위해서 아래와 같은 단계를 진행하면서 gRPC 를 적용한다. 이때 Mac M2 Chip 에서 이슈가 있었던 부분을 정리하였다.1. libs.version.toml 에 android protobuf plugin 버전 등록 및 plugin 적용protobufPlugin = "0.9.4"...protobuf = { id = "com.google.protobuf", version.ref = "protobufPlugin" }2. app > gradle kts 에 protobuf plugin 적용하기plugins { alias(libs.plugins.protobuf)}protobuf { protoc { artifact = libs.protobuf.proto..
[백준][5086] 배수와 약수 https://www.acmicpc.net/problem/5086 5086번: 배수와 약수 각 테스트 케이스마다 첫 번째 숫자가 두 번째 숫자의 약수라면 factor를, 배수라면 multiple을, 둘 다 아니라면 neither를 출력한다. www.acmicpc.net 문제 4 × 3 = 12이다. 이 식을 통해 다음과 같은 사실을 알 수 있다. 3은 12의 약수이고, 12는 3의 배수이다. 4도 12의 약수이고, 12는 4의 배수이다. 두 수가 주어졌을 때, 다음 3가지 중 어떤 관계인지 구하는 프로그램을 작성하시오. 첫 번째 숫자가 두 번째 숫자의 약수이다. 첫 번째 숫자가 두 번째 숫자의 배수이다. 첫 번째 숫자가 두 번째 숫자의 약수와 배수 모두 아니다. 입력 입력은 여러 테스트 케이스로 이루어져..
브루트 포스(Brute Force) 정의 brute: 무식한, force: 힘 무식한 힘으로 해석할 수 있다. 완전탐색 알고리즘. 즉, 가능한 모든 경우의 수를 모두 탐색하면서 요구조건에 충족되는 결과만을 가져온다. 이 알고리즘의 강력한 점은 예외 없이 100%의 확률로 정답만을 출력한다. 예제 1. 10의 약수의 합을 구하기 10의 약수가 될 수 있는 모든 자연수를 구조화 하자. {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} → 문제의 해가 될 수 있는 자료를 선형으로 구성하였다. 구조화된 자료가 선형 구조이므로 순차 탐색을 활용하여 첫 번째 원소부터 마지막 원소까지 탐색한다. 탐색하면서 10의 약수가 되는 값만 남겨두고 10의 약수가 될 수 없는 값을 배제한다. 10의 약수는 10을 현재 우너소로 나누어떨어지면 그 원소는 1..
[백준][KOTLIN][15652] N과 M(4) https://www.acmicpc.net/problem/15652 15652번: N과 M (4) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 문제 풀이 1. dfs 를 이용하여 주어진 입력 N, M 에 대해서 탐색한다. 2. 이때 숫자를 중복해서 사용해도 되기 때문에 visit 배열을 사용하지 않는다. 3. 비내림차순순열이어야 하기 때문에 현재 arr 의 마지막 값이 탐색하는 index 보다 작거나 같으면 arr 에 값을 넣고 dfs 를 수행하고 크면 dfs 를 수행하지 않고 다음 index 를 탐색한다. 4. M 과 depth 의 ..