hanker

백준(4673) JAVA - 셀프 넘버 본문

Study/ALGORITHM

백준(4673) JAVA - 셀프 넘버

hanker 2020. 12. 22. 13:42
반응형
public class Main {

	public static void main(String[] args) {
		int N = 10000;
		int[] ar = new int[N];
		int max = subClass.maxValue(Integer.toString(N));
		int[] selfNum = new int[max+1];
		for(int i = 1 ; i <= N ; i++) {
			
			String toS = Integer.toString(i);
			String[] strArray = toS.split("");
			
			if(toS.length() == 1) {
				for(int j = 0 ; j < toS.length(); j++) {
					selfNum[Integer.parseInt(strArray[j]) + Integer.parseInt(strArray[j])] = 1;
				}
			} else { 
				selfNum[subClass.repetition(toS)] = 1;
			}
		}
		
		for(int i = 1 ; i <= N ; i++) {
			
			if(selfNum[i] == 0) {
				System.out.println(i);
			}
		}
	}
}

class subClass {
	
	static int repetition(String num) {
		
		int sum = 0;
		
		String[] strArray = num.split("");
		
		for(int i = 0 ; i < num.length(); i++) {
			sum += Integer.parseInt(strArray[i]);
		}
		sum = sum + Integer.parseInt(num);
		return sum;
	}
	
	static int maxValue(String num) {
		int maxVal = 0;
		
		
		
		
		for(int i = 0 ; i < Integer.parseInt(num); i++) {
			String[] strArray = Integer.toString(i).split("");
			int sum = 0;
			for(int j = 0 ; j < strArray.length ; j++) {
				sum += Integer.parseInt(strArray[j]);
				
			}
			if(maxVal < sum + i) {
				maxVal = sum + i;
			}
		}
		return maxVal;
	}
}
반응형

'Study > ALGORITHM' 카테고리의 다른 글

백준(11654) JAVA - 아스키 코드  (0) 2020.12.23
백준(1065) JAVA - 한수  (0) 2020.12.23
백준(15596) JAVA - 정수 N개의 합  (0) 2020.12.22
백준(4344) JAVA - 평균은 넘겠지  (0) 2020.12.21
백준(8958) JAVA - OX퀴즈  (0) 2020.12.21