본문 바로가기
백준

[백준] 단계별로 풀어보기(단계:6,함수,JAVA)4673번, 셀프 넘버

by 열정적인 이찬형 2021. 12. 17.

문제 링크

4673번: 셀프 넘버
 
www.acmicpc.net

주의사항

  • JAVA를 사용하여 프로그램을 사용하였습니다.
  • 백준에서 코드를 작성하였을 때 아래 형태에서 Main에서 결과가 출력되어야 합니다.
public class Main{ 	
	public static void main(String[] args){
    }
}

문제 설명


접근 방법

  • 셀프 넘버를 출력하는 selfNum 함수를 형성하였습니다.
  • 각 더하기 연산을 한 값을 배열에 저장하였습니다.
  • 이중 for문을 사용하여 1~10000까지 더하기 연산 값과 동일하지 않은 수를 찾아서 bw에 저장하였습니다.
  • BufferedWriter를 사용하여 결과를 모두 출력하였습니다.

결과 코드

import java.util.*;
import java.io.*;
public class Main{
    public static void main(String[] args)throws IOException{
        selfNum(10000);		//함수 호출
    }
    public static void selfNum(int index) throws IOException{		//셀프 넘버 계산 함수
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        //결과 값을 출력하는 BufferedWriter
        int[] arr = new int[index];					//더하기 연산 저장할 배열
        for(int i=0;i<index;i++){					//더하기 연산 후 값 배열에 저장
            int num = i+1;
            arr[i] = num + (num/10000) + (num%10000)/1000 + (num%1000)/100 + (num%100)/10 + (num%10);
        }
        for(int i=1;i<=index;i++){				//1~10000까지 셀프넘버 찾아서 bw에 저장하기
            int stack=0;
            for(int j=0;j<index;j++){
                 if(i==arr[j]){
                    stack++;
                }
            }
            if(stack==0){
                bw.write(i+"\n");
            }
        }
        bw.flush();							//결과 출력하기
        bw.close();
    }
}

댓글