1일 1백준 2일차 두번째 문제, 오늘 푼 문제는 4673번 문제인 "셀프 넘버"이다.
4673번 "평균은 넘겠지" 문제 바로가기
https://www.acmicpc.net/problem/4673
풀면서 느낀 점은, 내가 아직 배열에 많이 미숙하다는 점이다.
배열의 인덱싱이라던가 큰 배열의 효율적인 처리 등 좋은 알고리즘을 떠올리는 데에 많은 시간이 걸린다.
그래도 하다보면 점점 나아지겠지?
나는 함수를 만들어서 이 문제를 풀었다.
이 함수는 어떤 수를 입력하면 n을 입력하면 문제에서 제시한 과정을 거친 뒤 반환해주는 함수이다.
이렇게 함수를 이용한 방식보다 더 효율적인 알고리즘이 있을 것 같은데, 지금 머리로는 떠오르지 않는다.
아래로 내리면 정답 코드가 나옵니다. 문제를 아직 풀지 않으신 분들은 주의해주세요.
import java.util.Scanner;
import java.util.concurrent.CountDownLatch;
import java.util.Arrays;
class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Test tt = new Test();
int[] numarr = new int[10000];
for (int i = 0 ; i < 10000 ; i++){
numarr[i] = i+1;
}
for (int i = 1 ; i < 10000 ; i++){
numarr[tt.selfnum(i)] = 0;
}
for(int i = 0 ; i < 10000-1 ; i++){
if(numarr[i] != 0){
System.out.println(numarr[i] - 1);
}
}
sc.close();
}
}
class Test{
int selfnum(int a){
String stra = Integer.toString(a);
for(int i = 0 ; i < stra.length() ; i++){
a += ((int)stra.charAt(i) - 48);
}
if(a >= 10000){
return 0;
}
else{
return a;
}
}
}
'1일 1백준' 카테고리의 다른 글
1일 1백준 : 4일차 11720번 숫자의 합 (0) | 2022.04.22 |
---|---|
1일 1백준 : 3일차 11654번 아스키 코드 (0) | 2022.04.21 |
1일 1백준 : 2일차 1065번 한수 (0) | 2022.04.20 |
1일 1백준 : 2일차 15996번 정수 N개의 합 (0) | 2022.04.20 |
1일 1백준 : 1일차 4344번 평균은 넘겠지 (0) | 2022.04.19 |