본문 바로가기

수학3

[백준 Silver 3] 1748 수 이어 쓰기 1 - Java 문제링크 : https://www.acmicpc.net/problem/1748 1748번: 수 이어 쓰기 1 첫째 줄에 N(1 ≤ N ≤ 100,000,000)이 주어진다. www.acmicpc.net 접근 과정 : 완전탐색으로 수를 N까지 탐색하면서, 그 자릿수를 모두 더해주었다. ++ N까지 모든 수를 탐색하지 않아도, 수의 범위로 자릿수의 총합을 구할 수 있다. 1~9 / 10~99 / 100~999 / .... 등 N과 각 자릿수의 범위 관계로 탐색연산의 횟수를 줄일 수 있다. 소스 코드 및 결과 : package BOJ; /** 수 이어 쓰기 1 완전탐색 */ import java.io.*; public class BOJ1748 { public static void main(String[] ar.. 2022. 1. 16.
[백준 Gold 3] 11812 K진 트리 - Java 문제링크 : https://www.acmicpc.net/problem/11812 11812번: K진 트리 첫째 줄에 N (1 ≤ N ≤ 1015)과 K (1 ≤ K ≤ 1 000), 그리고 거리를 구해야 하는 노드 쌍의 개수 Q (1 ≤ Q ≤ 100 000)가 주어진다. 다음 Q개 줄에는 거리를 구해야 하는 두 노드 x와 y가 주어진다. (1 ≤ x, y www.acmicpc.net 접근 과정 : 트리에서 부모 인덱스로 자식 인덱스를 계산하고, 자식 인덱스로 부모 인덱스를 계산하는 방식을 사용했다. 흔히 이진트리에서는 자식/2가 부모 인덱스가 되는 것처럼 이를 이용해 계산하려고 했다. 자식 인덱스를 보고 부모의 인덱스를 계산할 수 있는 방식이 필요했다. 나는 여려 계산 끝에, 부모 = (자식+K-2)/.. 2022. 1. 3.
[백준 Silver 5] 10610 30 - Java 문제링크 : https://www.acmicpc.net/problem/10610 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net 접근 과정 : 우선 입력 숫자의 길이가 크기때문에, 문자열로 받아서 처리해야 한다. 처음에는, 만들 수 있는 숫자의 조합을 모두 구하고, 큰 수부터 3의 배수인지 확인하려고 했다. 문득!! 3의 배수는 각 자릿수의 합이 3으로 나누어떨어져야 한다는 것이 생각나더라!!! 그래서 입력 숫자가 0을 포함하고 있고, 각 자릿수의 합이 3의 배수인지 확인했다. 위의 조건이 만족하지 않으면 -1을.. 2021. 12. 23.