코테/백준
백준 4673 셀프넘버
65살까지 코딩
2022. 1. 19. 10:14
728x90
반응형
import java.io.*;
class Main {
public static void main(String[] args) throws IOException {
int[] selfNumberList = new int[10001];
//1부터 10000까지 확인해줘야 하기 때문에 10001길이의 배열 생성
int i =1;
while(true){
//10001이라면 break
if(i == 10001){
break;
}
//i1의 셀프넘버 확인해주고 10000보다 작다면 1로변경
int i1 = selfNumber(i);
if(i1 <=10000) {
selfNumberList[i1] = 1;
}
i++;
}
//출력
for(int i2 =1; i2<selfNumberList.length; i2++){
if(selfNumberList[i2] == 0){
System.out.println(i2);
}
}
}
//셀프넘버 확인해주는 함수
static int selfNumber(int n){
String tmp = String.valueOf(n);
for(int i =0; i<tmp.length(); i++){
n+= Integer.parseInt(String.valueOf(tmp.charAt(i)));
}
return n;
}
}
과거에 C++로 풀었던 것과 비교
#include <iostream>
#include <vector>
using namespace std;
int d(int num)
{
//굉장히 놀랍다 ^^ 삽을 이렇게나 팠다니
int sum(0);
if ((0 < num) && (num < 10))
sum = num + num;
if ((10 <= num) && (num < 100))
sum = num + (num / 10) + (num % 10);
if ((100 <= num) && (num < 1000))
sum = num + (num / 100) + ((num % 100) / 10) + ((num % 100) % 10);
if ((1000 <= num) && (num < 100000))
sum = num + (num / 1000) + ((num % 1000) / 100) + (((num % 1000) % 100) / 10) + (((num % 1000) % 100) % 10);
return sum;
}
int main()
{
//진짜 꾸역꾸역 열심히 풀은 흔적이...
vector<bool>arr(10001, true);
for (int i = 0; i <= 10000; i++)
{
arr[d(i)] = false;
}
for (int i = 0; i <= 10000; i++)
{
if (arr[i])
{
cout << i << endl;
}
}
}
속도나 메모리 면에서 c++가 확실히 성능이 좋다.
728x90
반응형