
내가 생각했을때 문제에서 원하는부분
한 줄에 하나씩 문어 숫자가 입력으로 주어진다.
각 숫자는 최소 한 개,
최대 여덟 개의 문어 숫자 기호로 이루어져있다.
입력으로 '#'이 들어오면 입력을 종료한다.
입력 받은 문어 숫자에 대응하는 십진수를 한 줄에 하나씩 출력한다.
내가 이 문제를 보고 생각해본 부분
문자열 입력 후 문자열을 charAt으로 하나 씩 뽑고 문제에서 알려준 방식으로 10진수로 바꿔준다.
코드로 구현
package baekjoon.baekjoon_23;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
// 1864번 문제
public class Main804 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//반복 횟수가 따로 정해져있지 않으니 무한루프 사용
while(true) {
String S = br.readLine();
//10진수로 바꾼 값을 저장할 변수 선언
int result = 0;
//문자열 길이를 int 변수에 저장
int n = S.length();
//#이 오면 반복문 종료
if(S.equals("#")) {
break;
}
//문자열 0인덱스 자리부터 어떤 문자가 오는지에 따른 값 저장
for(int i = 0; i < n; i++) {
if(S.charAt(i) == '-') {
result += 0 * Math.pow(8, ((n - 1) - i));
} else if(S.charAt(i) == '\\') {
result += 1 * Math.pow(8, ((n - 1) - i));
} else if(S.charAt(i) == '(') {
result += 2 * Math.pow(8, ((n - 1) - i));
} else if(S.charAt(i) == '@') {
result += 3 * Math.pow(8, ((n - 1) - i));
} else if(S.charAt(i) == '?') {
result += 4 * Math.pow(8, ((n - 1) - i));
} else if(S.charAt(i) == '>') {
result += 5 * Math.pow(8, ((n - 1) - i));
} else if(S.charAt(i) == '&') {
result += 6 * Math.pow(8, ((n - 1) - i));
} else if(S.charAt(i) == '%') {
result += 7 * Math.pow(8, ((n - 1) - i));
} else {
result += -1 * Math.pow(8, ((n - 1) - i));
}
}
System.out.println(result);
}
br.close();
}
}
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.