문제 : boj2729
문제에 제시된대로 실제로 덧셈을 진행해주면 된다! 즉 문제에 나온대로 구현하면 풀 수 있다. 주의점은 입력은 0으로 시작할 수 있는데, 출력은 앞에 0이 붙으면 안된다는 점이다.
즉, '000001 00010' 이런 입력이 들어올 수 있고, 답은 '11' 로 앞의 0들을 출력하면 안된다.
코드 : github
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class Main {
private void solution() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int t = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
while (t-->0) {
StringTokenizer st = new StringTokenizer(br.readLine());
String a = st.nextToken();
String b = st.nextToken();
if (a.indexOf('1') == -1) a = "0";
else a = a.substring(a.indexOf('1'));
if (b.indexOf('1') == -1) b = "0";
else b = b.substring(b.indexOf('1'));
ArrayList<Integer> answer = new ArrayList<>();
int len = Math.max(a.length(), b.length());
int bit = 0;
for (int i = 0; i < len; i++) {
bit += a.length()-i-1<0?0:a.charAt(a.length()-i-1)-'0';
bit += b.length()-i-1<0?0:b.charAt(b.length()-i-1)-'0';
answer.add(bit%2);
bit/=2;
}
if (bit == 1)
answer.add(bit);
for (int i = answer.size()-1; i >= 0; i--) {
sb.append(answer.get(i));
}
sb.append('\n');
}
System.out.print(sb);
}
public static void main(String[] args) throws Exception {
new Main().solution();
}
}
'PS > BOJ' 카테고리의 다른 글
백준 3711 자바 - 학번 (BOJ 3711 JAVA) (0) | 2022.03.02 |
---|---|
백준 23394 자바 - Haja Ordenação (BOJ 23394 JAVA) (0) | 2022.03.01 |
백준 2947 자바 - 나무 조각 (BOJ 2947 JAVA) (0) | 2022.02.27 |
백준 14729 자바 - 칠무해 (BOJ 14729 JAVA) (0) | 2022.02.26 |
백준 11507 자바 - 카드셋트 (BOJ 11507 JAVA) (0) | 2022.02.25 |
댓글