코드굽는 타자기
SWEA[4366] - 정식이의 은행업무[D4] 본문
링크
SWEA[4366]
문제설명
- 2진수 모든자릿수 경우∩3진수 모든자릿수 경우
문제풀이
- HashSet으로 ∩ 검사
문제코드
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.StringTokenizer;
public class Solution4366_정식이의_은행업무 {
public static void main(String[] args) throws IOException {
System.setIn(new FileInputStream("res/swea/4366.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int T=Integer.parseInt(st.nextToken());
for (int test_case = 1; test_case <= T; test_case++) {
char[] bins = br.readLine().toCharArray();
char[] tris = br.readLine().toCharArray();
long ans = 0;
HashSet<Long> hs = new HashSet<Long>();
for (int i = 0; i < bins.length; i++) {
char mem = bins[i];
bins[i] = mem=='0'?'1':'0';
hs.add(Long.parseLong(new String(bins), 2));
// System.out.println(new String(bins));
bins[i] = mem;
}
top:
for (int i = 0; i < tris.length; i++) {
char mem = tris[i];
for (int j = 0; j <= 2; j++) {
if(tris[i] != (char)(j+'0')) {
tris[i] = (char)(j+'0');
if(hs.contains(Long.parseLong(new String(tris), 3))) {;
ans = Long.parseLong(new String(tris), 3);
break top;
}
// System.out.println(new String(tris));
tris[i] = mem;
}
}
}
System.out.println("#"+test_case+" "+ans);
/*
* 초기화
*/
}//end test_case
}//end main
}
아쉬운점
- int to char
- 1 - '0'으로 생각함
- '1' - '0' = (int)1 이고
- 1 + '0' = (char)'1' 임
잘한점
- HashSet 이용
- N진수 변환 메소드 사용했음
- 직접 구현해보는것도 필요할 듯
'알고리즘 > 완전탐색' 카테고리의 다른 글
Programmers[60059] - 자물쇠와 열쇠[Level3] (0) | 2020.09.01 |
---|---|
Baekjoon[15686] - 치킨 배달 (0) | 2020.05.01 |
Baekjoon[17825] - 주사위 윷놀이 (0) | 2020.03.30 |
SWEA[3378] - 스타일리쉬 들여쓰기 [D4] (0) | 2020.03.13 |
SWEA[1767] - 프로세서 연결하기 (0) | 2020.03.10 |
Comments