Jun's Development Journey
[BOJ] 4673번 셀프 넘버 본문
문제
4673번: 셀프 넘버
셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때,
www.acmicpc.net
풀이
1) 처음 풀이 (메모리 : 296772, 시간 : 920ms)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
static boolean isSelfNum(int num) {
for(int i=1;i<num;i++) {
String tmp = i+"";
int len = tmp.length();
int sum=i;
for(int j=0;j<len;j++)
sum+=(tmp.charAt(j)-'0');
if(sum==num)
return false;
}
return true;
}
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st;
for(int i=1;i<=10000;i++) {
if(isSelfNum(i))
sb.append(i+"\n");
}
System.out.println(sb);
}
}
제발 모든 문제를 Bruteforce 로 풀려고 하는 습관을 버렸으면 좋겠다. 솔직히 기업 코딩 테스트 문제에 브루트포스로 풀 문제는 거의 잘 안나올 것 같다. 제발 더 효율적인 방법을 찾을 수 있도록 더 고민해보고 브루트포스를 시도해보자...
2) 개선 코드( 메모리 : 14840, 시간 : 160ms)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
static int get_next(int num) {
int sum = num;
while(num/10!=0) {
sum+=num%10;
num/=10;
}
sum+=num;
return sum;
}
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st;
boolean[] chk = new boolean[10001];
for(int i=1;i<=10000;i++) {
int tmp = get_next(i);
if(tmp<10001)
chk[tmp] = true;
}
for(int i=1;i<=10000;i++) {
if(!chk[i])
sb.append(i+"\n");
}
System.out.println(sb);
}
}
'BOJ > 단계별로 풀어보기' 카테고리의 다른 글
[BOJ] 14889 스타트와 링크(백트래킹) (0) | 2021.04.01 |
---|---|
[BOJ] 9663 N-Queen(Backtracking 대표 문제) (0) | 2021.04.01 |
[BOJ] N과 M(백트래킹 입문 4문제) (0) | 2021.04.01 |
[BOJ] 1065번 한수 (0) | 2021.03.23 |
[BOJ] 입출력과 사칙연산 - 10171번 고양이, 10172번 강아지 (0) | 2021.03.23 |