[D3] 숫자가 같은 배수 - 14361
성능 요약
메모리: 23,200 KB, 시간: 151 ms, 코드길이: 1,388 Bytes
제출 일자
2023-10-22 20:46
출처: SW Expert Academy, https://swexpertacademy.com/main/code/problem/problemList.do
문제 해결 방법
1. 값을 입력 받은 뒤 N의 길이와 n의 배수 길이를 구한다.
2. k를 문자 배열로 만들어서 값을 넣어준다.
3. N배열과 K배열을 비교한다. (값이 같다면 K[idx]를 'y' 로 교체 후 break; 해줌 같지않다면 for문 종료)
4. for문을 나왔을 때 search가 true면 while문 종료 후 possible출력
5. 끝까지 돌렸을 때 search가 false면 invalid 값이므로 impossible 출력
import java.util.*;
import java.io.*;
class Solution
{
public static void main(String args[]) throws Exception
{
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for(int tc = 1; tc <= T; tc++)
{
int n = sc.nextInt();
int len = numberLen(n);
char[] nChar = String.valueOf(n).toCharArray();
int k = 2 * n;
String result = "impossible";
while(len == numberLen(k)){
char[] kChar = String.valueOf(k).toCharArray();
boolean search = true;
for(int i = 0; i < len; i++){
search = false;
for(int j = 0; j < len; j++){
if(nChar[i] == kChar[j]){
kChar[j] = 'y';
search = true;
break;
}
}
if(!search) break;
}
if(search) {
result = "possible";
break;
}
k += n;
}
System.out.printf("#%d %s\n",tc,result);
}
}
private static int numberLen(int n){
int count = 0;
while(n != 0){
n /= 10;
count++;
}
return count;
}
}
더 쉬운 방법
1. 기존 N값을 origin으로 저장한다.
2. KN값을 mul에 저장한다.
3. mul 값을 하나씩 찾아본 후 만약 origin에 없다면 false이므로 for문 탈출
4. 끝까지 돌렸을 때 check가 true라면 valid한 값이므로 while문 탈출
import java.util.*;
import java.io.*;
class Solution
{
public static void main(String args[]) throws Exception
{
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for(int tc = 1; tc <= T; tc++)
{
int num = sc.nextInt();
String origin = String.valueOf(num);
int i = 2;
String mul = String.valueOf(num * i);
boolean check = false;
while(mul.length() == origin.length()){
check = true;
for(int idx = 0; idx < mul.length(); idx++){
String ch = String.valueOf(mul.charAt(idx));
if(!origin.contains(ch)){
check = false;
break;
}
}
if(check){
break;
}else{
i++;
mul = String.valueOf(num * i);
}
}
System.out.println("#" + tc + " " + (check ? "possible" : "impossible"));
}
}
}
'알고리즘 - SWEA > D3' 카테고리의 다른 글
[SW expert Academy] SWEA 13732번 정사각형 판정 자바(Java) (0) | 2023.10.22 |
---|---|
[SW expert Academy] SWEA 14178번 1차원 정원 자바(Java) (1) | 2023.10.22 |
[SW expert Academy] SWEA 14413번 격자판 칠하기 자바(Java) (1) | 2023.10.22 |
[SW expert Academy] SWEA 14555번 공과 잡초 자바(Java) (0) | 2023.10.22 |
[SW expert Academy] SWEA 14692번 통나무 자르기 자바(Java) (1) | 2023.10.21 |