본문 바로가기

코딩 문제/백준

백준 - 28086번

728x90

풀이

 

import java.io.*;

public class Main {

      public static void main(String[] args) throws Exception {

            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

            String[] notNumList = {"/", "*", "+", "-"}; // 연산자 리스트

            int notNum = 0, notNumIndex = -1; // 연산자 idx, 앞 숫자/뒤 숫자 구분 위치

            long result = 0; // 연산 결과 값

            String changeResult = ""; // 출력 결과 값

            String inputStr = br.readLine(); // 입력받기

 

            // 연산자 및 앞/뒤 숫자 체크

            for(int i=0; i<4; i++) {

                  if(notNumIndex == -1) {

                        notNum = i;

                        notNumIndex = inputStr.indexOf(notNumList[i]);

                        if(i == 3 && notNumIndex == 0) {

                              notNumIndex = inputStr.indexOf(notNumList[i], inputStr.indexOf(notNumList[i]) + 1);

                        }

                  }

            }

 

            String fNum = inputStr.substring(0, notNumIndex);

            String lNum = inputStr.substring(notNumIndex+1);

 

            if(notNum == 0 && lNum.equals("0")) { // 연산 불가 체크

                  System.out.print("invalid");

            } else {

                  long firstNum = Long.valueOf(fNum, 8);

                  long lastNum = Long.valueOf(lNum, 8);

                  Boolean state = (firstNum < 0 && lastNum > 0) || (firstNum > 0 && lastNum < 0) ? true : false;

 

                  if(notNum == 0) {

                        result = firstNum / lastNum;

                        if(state && firstNum % lastNum != 0) result -= 1;

                  } else if(notNum == 1) {

                        result = firstNum * lastNum;

                  } else if(notNum == 2) {

                        result = firstNum + lastNum;

                  } else {

                        result = firstNum - lastNum;

                  }

 

                  if(result < 0) {

                        changeResult = "-" + Long.toString(result * -1, 8);

                  } else {

                        changeResult = Long.toString(result, 8);

                  }

 

                  System.out.print(changeResult);

            }

 

            br.close();

      }

}

 

'코딩 문제 > 백준' 카테고리의 다른 글

백준 - 7576번  (1) 2024.02.25
백준 - 13460번  (0) 2023.06.18
백준 - 16437번  (1) 2021.03.25
백준 - 1987번  (0) 2021.03.25
백준 - 10026번  (0) 2021.03.25