백준 문어 숫자

KIMYEONGJUN·2024년 10월 12일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

한 줄에 하나씩 문어 숫자가 입력으로 주어진다.
각 숫자는 최소 한 개,
최대 여덟 개의 문어 숫자 기호로 이루어져있다.
입력으로 '#'이 들어오면 입력을 종료한다.
입력 받은 문어 숫자에 대응하는 십진수를 한 줄에 하나씩 출력한다.

내가 이 문제를 보고 생각해본 부분

문자열 입력 후 문자열을 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();
    }
}

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글