목록수학 (75)
기록방
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/nFC2Z/btrNcmI1IDW/7an1u8VOcnEXklnYDHegjk/img.png)
👉 문제링크 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net 🔸 문제 분석 🔸 10000 이하의 셀프넘버를 출력한다. 🔸 코드 🔸 public class Main { public static void main(String[] args) { final int MAX = 10000; boolean arr[] = new boolean[MAX+1]; for (int i = 1; i
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/nxpZG/btrMUFon8yM/BbPMN7SlQMJxAPi6D1UQE1/img.png)
👉 문제링크 2018번: 수들의 합 5 어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 알고 싶어한 www.acmicpc.net 🔸 문제 분석 🔸 1부터 N이하의 수들의 합이 N이 나오는 경우의 수를 출력한다. 🔸 코드 🔸 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) th..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/mED3v/btrMUkXXg6b/W65eGAbEu4RPvZDhcHEsfK/img.png)
👉 문제링크 10986번: 나머지 합 수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오. 즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j) www.acmicpc.net 🔸 문제 분석 🔸 n개의 입력되는 숫자의 부분 구간 합이 m으로 나누어 떨어지는 경우의 수를 출력한다. n은 100만, m은 100이다. 구간 합을 매번 계산하면 시간이 부족하므로 구간 합 배열을 미리 계산한다. 구간 합 배열 공식 : S[i] = S[i-1] + A[i] 배열에서 구간 합 구하기 ( i ~ j ) : S[j] - S[i-1] 나머지도 미리 계산해 두는 것이 핵심 아이디어 (A + B) ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/lRQUn/btrMkR4jMkj/FRJdLpW7x0bCOLKMdYcdX1/img.png)
👉 문제링크 1312번: 소수 피제수(분자) A와 제수(분모) B가 있다. 두 수를 나누었을 때, 소숫점 아래 N번째 자리수를 구하려고 한다. 예를 들어, A=3, B=4, N=1이라면, A÷B=0.75 이므로 출력 값은 7이 된다. www.acmicpc.net 🔸 문제 분석 🔸 A, B, N을 입력받고 A/B에서 N번째 소수점 아래 수를 출력한다. 🔸 코드 🔸 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); int n = sc.nextInt(); int ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bwpgat/btrMkfkhKNh/iZvMRUk3oSIT6nXNWACwGK/img.png)
👉 문제링크 1094번: 막대기 지민이는 길이가 64cm인 막대를 가지고 있다. 어느 날, 그는 길이가 Xcm인 막대가 가지고 싶어졌다. 지민이는 원래 가지고 있던 막대를 더 작은 막대로 자른다음에, 풀로 붙여서 길이가 Xcm인 막대 www.acmicpc.net 🔸 문제 분석 🔸 64cm 막대기를 원하는 크기(x)의 막대기로 만들때, 조각의 개수를 출력한다. 모든 막대의 합이 x보다 크면 다음 과정을 반복한다. 가장 짧은 막대를 절반으로 자른다. 자른 막대의 절반을 버렸을때도 전체 합이 x보다 크다면, 그 막대를 버린다. 막대 조각의 개수는 과정의 반복 횟수와 같다. 🔸 코드 🔸 import java.util.ArrayList; import java.util.Scanner; public class Mai..