본문 바로가기

✔️ Algorithm26

[백준/Java] 4673번 : 셀프 넘버 https://www.acmicpc.net/problem/4673 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net ✔️ 풀이과정 4673번 문제는 구현 문제로, 내가 처음 풀이한 방식은 다음과 같다. 먼저 자릿수를 나타내는 digit 변수를 생성하여 문제에서 말하는 양의 정수 n의 자릿수를 구한 후, digit과 n을 인수로 하여 함수 rusult를 반복문을 사용해 10000번 호출한다. 함수 result는 셀프 넘버를 구하는 함수로, 예를 들어 n=1234라.. 2024. 3. 13.
[백준/Java] 17478번 : 재귀함수가 뭔가요? https://www.acmicpc.net/problem/17478 17478번: 재귀함수가 뭔가요? 평소에 질문을 잘 받아주기로 유명한 중앙대학교의 JH 교수님은 학생들로부터 재귀함수가 무엇인지에 대하여 많은 질문을 받아왔다. 매번 질문을 잘 받아주셨던 JH 교수님이지만 그는 중앙대 www.acmicpc.net ✔️ 풀이과정 dfs를 사용하는 문제를 푸는데 재귀함수를 제대로 활용하지 못하는 것 같아 재귀함수를 다시 공부하기 위해 풀어보았다. 17478번은 재귀함수를 사용하는 기본적인 문제였다. 풀이 과정을 보이기 위해 간단하게 과정을 그림으로 나타내면 다음과 같다. 먼저 문제의 예제1에서 N=2인 경우를 보면 다음과 같이 결과가 출력되어야 한다. 따라서 아래와 같은 과정으로 재귀가 수행되어야 한다. 재.. 2024. 3. 10.
[백준/Java] 1110번 : 더하기 사이클 https://www.acmicpc.net/problem/1110 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net ✔️ 풀이과정 처음엔 생각없이 정말 문제에서 하는 말 그대로 노가다로 코드를 작성했다. 문자열로 변수를 선언해서 인덱스를 사용해 가장 오른쪽 자리 수를 이어붙여 값을 계산한다. 그러면 해당 값이 한자리 수 인지도 확인해줘야 해서 코드가 길어진다. import java.util.Scanner; class Main { public static void main(String[] args).. 2024. 3. 5.
[백준/Cpp] 1920번 : 수 찾기 https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net ✔️ 풀이과정 위 문제는 이진탐색 알고리즘을 사용하여 해결할 수 있으며, 이진탐색 알고리즘은 더보기를 참고하자. 더보기 이진탐색 알고리즘 1. 오름차순으로 정렬된 데이터에서 중앙값 선택 2. 만약, 비교할 값이 중앙값 보다 큰 경우 → 중앙값을 기준으로 배열의 오른쪽 선택 3. 만약, 비교할 값이 중앙값 보다 작은 경우 → 중앙값을 기준으로 배열의 .. 2023. 9. 4.