백준(Backjoon) 1373, 2진수 8진수
2021. 7. 20. 20:37ㆍCodingTest
문제풀이
입력받은 2진수 문자열에서 뒤쪽부터 3개씩 잘라서 그에 맞는 8진수로 변경하여 따로 누적시킨다. 그리고 최종적으로 누적한 문자열 변수를 거꾸로 변경하면 최종 8진수가 될 것이다. 주의할 점은 3개씩 잘라서 변환시키다가 숫자가 1개(1) 또는 2개(11) 남을 수 있다. 이 경우 앞자리에 0을 채워준다.
소스코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
public class Main {
private static Map<String, String> map = new HashMap<String, String>(){
{
put("000", "0");
put("001", "1");
put("010", "2");
put("011", "3");
put("100", "4");
put("101", "5");
put("110", "6");
put("111", "7");
}
};
public static String solution(String n)
{
StringBuilder answer = new StringBuilder();
for(int i=n.length()-1;i>=0;i-=3)
{
if(i-2<0)
{
String temp = n.substring(0, i+1);
while(temp.length()!=3)
{
temp = "0" + temp;
}
answer.append(map.get(temp));
}
else
{
answer.append(map.get(n.substring(i-2, i+1)));
}
}
return answer.reverse().toString();
}
public static void main(String args[]) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println(solution(br.readLine()));
}
}
'CodingTest' 카테고리의 다른 글
백준(Backjoon) 2667, 단지번호붙이기 (0) | 2021.07.21 |
---|---|
백준(Backjoon) 7567, 그릇 (0) | 2021.07.21 |
백준(Backjoon) 7568, 덩치 (0) | 2021.07.12 |
백준(Backjoon) 1259, 팰린드롬수 (0) | 2021.07.08 |
백준(Backjoon) 10820, 문자열 분석 (0) | 2021.07.07 |