https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV18_yw6I9MCFAZN
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
문제에서 요구하는 것은 어떤 수의 자릿수 각각의 값들을 검증하는 것이라고 할 수 있다.
단순하게 풀면, 검증하기 위해 set에 넣어도 될 것 같은데, 비트마스킹을 이용해서 풀이해봤다.
먼저 어떤 수(N)은 검증을 완료할 때마다 같은 수가 더해지는 2N, 3N,,, 이 된다.
이 수를 10으로 나눠서 그 나머지를 확인해준다.
비트마스킹을 이용해서 확인하는 방법에는 1. &연산을 이용해서 숫자 지워주기, 2. |을 이용해서 2^10-1이 되는 지 확인해주기
둘 다 결국에 같은 거라 아무거나 사용해도 된다.
1. & 연산자 이용
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
import java.util.*;
import java.io.*;
class Solution
{
public static void main(String args[]) throws Exception
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T;
T=Integer.parseInt(br.readLine());
for(int test_case = 1; test_case <= T; test_case++)
{
StringTokenizer st;
st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int cur = 0;
int validate = (1 << 10) -1;
int multi = 0;
while(validate > 0) {
//새로운 숫자 만들기.
cur = N * (multi++);
//검증하기
while(cur > 0) {
int temp = cur % 10;
validate &= ~(1 << temp);
cur /= 10;
}
}
System.out.println("#"+ test_case+ " "+ N * (multi-1));
}
}
}
|
cs |
2. | 연산자 이용
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
import java.util.*;
import java.io.*;
class Solution
{
public static void main(String args[]) throws Exception
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T;
T=Integer.parseInt(br.readLine());
for(int test_case = 1; test_case <= T; test_case++)
{
StringTokenizer st;
st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int cur = 0;
int validate = 0;
int multi = 0;
while(true) {
//검증하기
while(cur > 0) {
int temp = cur % 10;
validate |= (1 << temp);
cur /= 10;
}
//종료 조건
if(validate == 1023) break;
//새로운 숫자 만들기.
cur = N * (multi++);
}
System.out.println("#"+ test_case+ " "+ N * (multi - 1));
}
}
}
|
cs |
반응형
'알고리즘 문제 풀이 > SWEA' 카테고리의 다른 글
[SWEA]1970. 쉬운 거스름돈 java (0) | 2022.03.07 |
---|---|
[SWEA]5122. 수열 편집 java (0) | 2022.03.06 |
[SWEA] 1230. [S/W 문제해결 기본] 8일차 - 암호문3 java (0) | 2022.03.05 |
[SWEA]3316. 동아리실 관리하기 D4 (java) (0) | 2022.03.04 |
[SWEA]10726. 이진수 표현(java) (0) | 2022.03.03 |