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

[Java] SWEA 4366번 정식이의 은행 업무

by 컴공맨 2021. 4. 20.
 

SW Expert Academy

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

swexpertacademy.com


풀이

우선, 문제에 주어진대로 2진수로 만들 수 있는 모든 숫자를 list에 저장한 후에 3진수로 만들 수 있는 모든 숫자를 만들면서 list에 들어있는지를 검사하게 하여 해결했습니다.


코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class Solution {
	public static String binary, ternary;
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder("");
		
		int T = Integer.parseInt(br.readLine());
		
		for (int tc = 1; tc <= T; ++tc) {
			binary = br.readLine();
			ternary = br.readLine();
			
			// 이진수의 모든 경우를 십진수로 바꾸어 저장
			List<Integer> list = new ArrayList<Integer>();
			
			list.add(Integer.parseInt(binary, 2));
			for (int i = 0; i < binary.length(); ++i) {
				char[] changeBinary = binary.toCharArray();
				
				if (changeBinary[i] == '1') {
					changeBinary[i] = '0';
				}
				else {
					changeBinary[i] = '1';
				}
				
				list.add(Integer.parseInt(String.valueOf(changeBinary), 2));
			}
			
			int answer = 0;
			
			// 삼진수를 처리하면서 같은 십진수의 수가 list에  있는지 검사
			out: for (int i = 0; i < ternary.length(); ++i) {
				char[] changeTernary = ternary.toCharArray();
				
				for (int j = 1; j <= 2; ++j) {
					char originalBit = changeTernary[i];
					int changeBit = ((changeTernary[i] - '0') + j) % 3;
					
					changeTernary[i] = (char) (changeBit + '0');
					answer = Integer.parseInt(String.valueOf(changeTernary), 3);
					if (list.contains(answer)) {
						break out;
					}
					
					changeTernary[i] = originalBit;
				}
			}
			
			sb.append("#").append(tc).append(" ").append(answer).append("\n");
		}
		
		System.out.println(sb);
	}
}

 

pyo7410/Algorithm

1일 1커밋을 목표로! Contribute to pyo7410/Algorithm development by creating an account on GitHub.

github.com