풀이
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 |