https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV18_yw6I9MCFAZN&categoryId=AV18_yw6I9MCFAZN&categoryType=CODE

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

www.swexpertacademy.com

풀이

  1. 먼저 처음 N값을 문자열로 저장(s) 받은 후에 정수형(n)으로도 따로 저장해줬다.
  2. 0부터 9까지의 숫자를 모두 보았는지 확인하기 위해 check 배열count 변수를 사용하였다.
  3. 문자열을 한칸씩 정수로 변환하여 check배열에 있는지 확인하였고 없으면 count 변수를 증가하고 true값으로 바꿔준다.
  4. count 변수가 10이 되면 10개의 숫자를 모두 봤다는 의미이므로 break해준다.
  5. 10개를 모두 보지 못했다면 xN번 숫자를 확인하기 위해 x * n 값을 문자열로 변환하여 s에 저장해준다.
  6. 10개의 숫자를 모두 봐서 반복문을 빠져나왔다면 그때의 문자열(s)을 출력해준다.

 

import java.io.*;

public class Solution {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int T = Integer.parseInt(br.readLine());
		for(int tc=1; tc<=T; tc++) {
        
        	//입력받은 값을 문자열과 정수형으로 각각 저장
			String s = br.readLine();
			int n = Integer.parseInt(s);
            
            
            //0-9까지의 숫자를 모두 봤는지 확인
			boolean check[] = new boolean[10];
			int count = 0;
			
            
			int x=1; //입력받은 n에 계속 곱해줄 변수
			while(true) {
				for(int i=0; i<s.length(); i++) {
                	//한글자씩 정수로 변환하여 확인
					int tmp = Integer.parseInt(s.substring(i,i+1));
					if(check[tmp] == false) {
						count++;
						check[tmp] = true;
					}
				}
				
                //10개를 모두 봤다
				if(count == 10) break;
				
				x++;
				s = Integer.toString(n*x);
			}
			
			System.out.println("#"+tc+" "+s);
			
			
		}
	}

}

+ Recent posts