말랑한 하루

[SW Expert Academy] 4366 정식이의 은행업무 [Java] 본문

문제풀이/SWexpert Academy

[SW Expert Academy] 4366 정식이의 은행업무 [Java]

지수는말랑이 2021. 1. 31. 00:11
반응형

[ 시간복잡도 ]

[ 핵심풀이 ]

String의 substring으로 만드는 방법과

StringBuilder의 charAt(index, value)로 변경하는 방법 두가지가있다.

참고 하면 좋을것같다.

[ 핵심소스 ]

StringBuilder sb = new StringBuilder(temp3);
if (temp3.charAt(i) == '0') {
    sb.setCharAt(i, '1');
    l3.add(Long.parseLong(""+sb, 3));
}

[ Java ]

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class _4366_정식이의_은행업무 {
    static String temp2;
    static String temp3;
	
    static void init() {
        Scanner sc = new Scanner(System.in);
        int tc = sc.nextInt();
        for(int t=1;t<=tc;t++) {
            temp2=sc.next();
            temp3=sc.next();
            System.out.print("#"+t+" ");
            solve();
        }
    }
    static void solve() {
        List<Long> l3 = new ArrayList<Long>();
        ch3(temp3, l3);
        ch2(temp2, l3);
    }
	
    static void ch2(String value, List<Long> l3) {
        for(int i=0;i<temp2.length();i++) {
            StringBuilder sb = new StringBuilder(temp2);
            if (temp2.charAt(i) == '1')
                sb.setCharAt(i, '0');
            else
                sb.setCharAt(i, '1');
            Long ret = Long.parseLong(""+sb, 2);
            if (l3.contains(ret)) {
                System.out.println(ret);
                return;
            }
        }
    }
    static void ch3(String value, List<Long> l3) {
        for(int i=0;i<temp3.length();i++) {
            StringBuilder sb = new StringBuilder(temp3);
            if (temp3.charAt(i) == '0') {
                sb.setCharAt(i, '1');
                l3.add(Long.parseLong(""+sb, 3));
                sb.setCharAt(i, '2');
                l3.add(Long.parseLong(""+sb, 3));
            }
            else if (temp3.charAt(i) == '1') {
                sb.setCharAt(i, '0');
                l3.add(Long.parseLong(""+sb, 3));
                sb.setCharAt(i, '2');
                l3.add(Long.parseLong(""+sb, 3));
            }
            else {
                sb.setCharAt(i, '0');
                l3.add(Long.parseLong(""+sb, 3));
                sb.setCharAt(i, '1');
                l3.add(Long.parseLong(""+sb, 3));
            }
        }
    }
	
	public static void main(String[] args) {
        init();
    }
}
반응형
Comments