문제 접근
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));
}
}
}
'알고리즘 > SWEA' 카테고리의 다른 글
[SWEA / 원 안의 점 / JAVA] (0) | 2023.05.09 |
---|---|
[SWEA / 아름이의 돌 던지기 / JAVA → C++] (0) | 2023.05.08 |
[SWEA / 간단한 소인수분해 / JAVA] (0) | 2023.05.04 |
[SWEA / 날짜 계산기 / JAVA] (1) | 2023.05.03 |
[SWEA / 두 개의 숫자열 / JAVA] (0) | 2023.05.02 |
댓글