https://www.acmicpc.net/problem/1373
이 문제 같은 경우는 2진수가 주어지고 나서 3개씩 끊어줬을 때 1개가 남거나 2개가 남는 조건에 그에 맞는 계산을 해주고 나머지는 반복문을 이용하여 계산을 해준다
일단 2진수가 만약 1010011일 경우 3개씩 끊어준다 함은 1 / 010 / 011 로 끊고 각 칸에 맞게 계산을 한다면?
2^0*1 / 2^2*0 + 2^1*1 + 2^0*0 / 2^2*0 + 2^1*1 + 2^0*1
= 1 / 0 + 2 + 0 / 0 + 2 + 1
= 1/2/3
= 123이다!
이 원리를 기반으로 코딩을 한다
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
String N = br.readLine();
if(N.length() % 3 == 1)
sb.append(N.charAt(0));
if(N.length() % 3 == 2)
sb.append((N.charAt(0) - '0') * 2 + (N.charAt(1) - '0'));
for(int i = N.length() % 3; i < N.length(); i+=3){
sb.append((N.charAt(i) - '0') * 4 + (N.charAt(i+1) - '0') * 2 + (N.charAt(i+2) - '0'));
}
System.out.println(sb);
}
}
'백준온라인' 카테고리의 다른 글
(JAVA)백준온라인 1463번 - 1로 만들기 (0) | 2023.09.09 |
---|---|
(JAVA)백준온라인 11576번 - Base Conversion (0) | 2023.09.01 |
(JAVA) 백준온라인 17087번 - 숨바꼭질 6 (0) | 2023.08.17 |
(JAVA)백준온라인 9613번 - GCD합 (0) | 2023.08.17 |
(JAVA)백준 온라인 2004번 - 조합 0의 개수 (0) | 2023.08.12 |