Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- 프로그래머스
- 2941
- 백준 1712
- 백준 10250
- 백준 2292
- 백준 2839
- C
- 백준 1978
- Java
- 백준 10757
- 백준 2566
- 백준 - 1371
- 1157
- 백준 2581
- 백준 2563
- 백준 2750
- 백준2869
- 백준
- 백준 1264
- 백준 2738
- 백준 2587
- 백준 1547
- 백준 1929
- 백준 2775
- 백준 9020
- 백준 1316
- 백준 11653
- 자바
- 백준 1193
- 수박수박수박수박수박수?
Archives
- Today
- Total
perry05
[백준] 4673 - 셀프 넘버(JAVA) 본문
[백준] 단계별로 풀어보기 - 함수
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
> 문제

> 풀이
import java.util.Arrays;
public class Main {
static Boolean[] selfNumber = new Boolean[10000];
static int N = 10000;
// n으로 만들 수 있는 d(n)에 false표시 하는 메소드
static void isSelfNumber(int n) {
int tmp;
while(true) {
tmp = n;
while(tmp > 0) {
n = n + (tmp % 10);
tmp = tmp / 10;
}
if(n>10000) break;
selfNumber[n-1] = false;
}
}
public static void main(String[] args) {
StringBuilder br = new StringBuilder();
Arrays.fill(selfNumber, true);
for(int i = 0; i < N; i++) {
if(selfNumber[i]) {
isSelfNumber(i+1);
br.append(i+1).append("\n");
}
}
System.out.println(br);
}
}
너무 복잡하게 생각한 것 같다. 제출 후 다른 사람의 풀이를 보니 1부터 차례로 d(i)만 구해서 d(i)만 표시해주면 더 효율적으로 할 수 있었다.
'문제풀이 기록 > JAVA' 카테고리의 다른 글
| [백준] 11654 - 아스키 코드(JAVA) (0) | 2022.11.27 |
|---|---|
| [백준] 1065 - 한수(JAVA) (0) | 2022.11.26 |
| [백준] 15596 - 정수 N개의 합(JAVA) (0) | 2022.11.26 |
| [백준] 4344 - 평균은 넘겠지 (JAVA) (0) | 2022.11.25 |
| [백준] 8958 - OX퀴즈 (JAVA) (0) | 2022.11.25 |
Comments