2022.02.05 네이버 블로그에 정리했던 것!
package 백준함수;
import java.util.*;
public class 셀프넘버 {
public static int selfNum(int x) {
int ans=0;
for(int i=0; i<x;i++) {
int a=i/1000;
int b=(i%1000)/100;
int c=(i%100)/10;
int d=i%10;
int[] arr=new int[x];
for(int j=0;j<x;j++)
{if(i!=(i+a+b+c+d)) {
arr[j]=i;
}
}
}
return arr[];
}
public static void main(String[] args) {
// TODO Auto-generated method stub
for (int i=0; i<10001;i++) {
int n = selfNum(i);
}
}
}
package 백준함수;
import java.util.*;
public class 셀프넘버 {
public static int selfNum(int x) {
int sum=x;
while(x!=0) {
sum=sum+(x%10); //첫 째 자리수
x = x/10; //10을 나누어 첫 째 자리를 없앤다
}
return sum;
}
public static void main(String[] args) {
boolean[] check = new boolean[10001];
for (int i=0; i<10001;i++) {
int n = selfNum(i);
if(n<10001) {
check[n]=true;
}
}
StringBuilder sb = new StringBuilder();
for (int i = 1; i < 10001; i++) {
if (!check[i]) { // false 인 인덱스만 출력
sb.append(i).append('\n');
}
}
System.out.println(sb);
}
}
StringBuilder 클래스
새로운 객체를 만들지 않고도 자유롭게 문자 변경 작업을 할 수 있다.
문자열이 커질수록 자동으로 크기를 추가하기 때문에 초기에 주는 생성자에 크기값을 줄 필요가 크게 없다.
가장 많이 사용하는 문자 추가 메소드:append
생각 못한 부분:
boolean 배열을 통해 참 거짓으로 셀프 넘버를 구별할 수 있을 줄이야 boolean 배열을 생각지도 못하고 있었다
if(n<10001)
check[n]=true 같이 다 true로 여기고 StringBuilder 클래스를 통해 문자열을 추가하여 false인 인덱스만 출력하기..! !check[i]도 또다른 거짓의 표현임을 되새김
public class 한수 {
public int function(int x) {
int a=x/100;
int b=(x%100)/10;
int c=x%10;
int cnt = 0;
if((a-b)==(b-c))
{cnt++;}
return cnt;
}
import java.util.*;
public class 한수 {
public static int function(int x) {
if(x<100) {
return x;
}
else {
int cnt=99;
for(int i=100;i<=x;i++) {
int a=i/100;
int b=(i%100)/10;
int c=i%10;
if((a-b)==(b-c))
{cnt++;}
}
return cnt;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
System.out.print(function(sc.nextInt()));
}
}