본문 바로가기
알고리즘/SWEA

[SWEA / 새로운 불면증 치료법 / JAVA]

by KDW999 2023. 5. 8.

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&contestProbId=AV18_yw6I9MCFAZN&categoryId=AV18_yw6I9MCFAZN&categoryType=CODE&problemTitle=&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=2&pageSize=10&pageIndex=3 

 

SW Expert Academy

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

swexpertacademy.com

 

문제 접근

N의 숫자를 총 몇 번 사이클 돌렸는지 구하는 문제다.

N의 숫자와 사이클을 나타내는 변수 선언 후 해당 변수를 형 변환 → 한 문자씩 읽어서 저장 → 저장된 문자들에 0~9부터 까지 포함되어 있는지 검사
검사가 통과되면 현재 사이클 횟수 * N을 출력

 

++ 한 문자씩 잘라서 저장하지 않고 String으로 형 변환한 N값 전체를 한 변수에 통째로 저장해도 된다.

import java.util.*;
import java.io.*;

public class Main {
	public static void main(String[] args)  {
	  Scanner sc = new Scanner(System.in);
	  int T = sc.nextInt();
	  
	  for(int t=1; t<=T; t++) {
		  int N = sc.nextInt();
		  
		  int count = 1;
		  String word = "";
		  
		  while(true) {
			  int mul = count * N;
			  String str = String.valueOf(mul);
			  
			  for(int i=0; i<str.length(); i++) word += String.valueOf(str.charAt(i));	  
			  
			  if(word.contains("0") && word.contains("1") && word.contains("2") &&
						 word.contains("3") && word.contains("4") && word.contains("5") &&
						 word.contains("6") && word.contains("7") && word.contains("8") &&
						 word.contains("9")) break;
			  count++;
		  }
		  System.out.println("#"+t+ " "+ (N*count));
	  }
	}
}

 

다른 사람 풀이

0~9까지 확인을 위한 boolean 배열 생성

N값을 한 자씩 잘라서 자른 숫자의 해당 배열 인덱스에 숫자가 들어가있는지 확인 → 안들어가있으면 true로 바꿔서 들어갔다라고 표시해두고 cnt를 1증가

총 10번 들어가면 cnt는 10이 되고 반복문 탈출 후 값 출력 

import java.util.*;
import java.io.*;

public class Solution {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int T = sc.nextInt(); // 테케
		
		for(int t=1; t<=T; t++) {
			
			String A = sc.next();
			int N = sc.nextInt();
			
			boolean[] arr = new boolean[10];
			
			int num = 1;
			
			int cnt = 0;
			
			while(true) {
				for(int i=0; i<A.length(); i++) {
					int temp = Integer.parseInt(A.substring(i, i+1));
					if(arr[temp] == false) {
						arr[temp] = true;
						cnt++;
					}
				}
				
				if(cnt == 10) break;
				
				else {
					num++;
					A = Integer.toString(num*N);
				}
			}
			System.out.println("#"+t+ " "+ (N*cnt));
		}
     }
  }

 

댓글