전공공부
[BOJ_21275] 폰 호석만 본문
설명
이건 해답을 주고 문제를 풀어나간다고 생각하고 풀면 된다. 기존의 서로 다른 진법으로 변환된 수 2개가 주어지면 이때 변환된 기존의 값 X 값과 어떤 진법으로 각각 변환했는지 보는 문제다. 그래서, 2진법 부터 36 진법 부터 모두 변환하며 진행하며 이때, long 값의 범위를 넘어가는 값은 에러처리 또는 Impossible 처리를 해주면 된다.
아래 코드는 API를 이용했지만, 실제로 변환하는 식을 구현해서 변환 하는 것이 좋을 것 같다.
코드
package Math;
import java.util.Scanner;
public class BOJ_21275 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 입력 받기
String a = sc.next();
String b = sc.next();
long X = 0;
long A = 0;
long B = 0;
int cnt = 0;
// 가능한 경우 찾기
for (int formatA = 2; formatA <= 36; formatA++) {
if(cnt > 1){
break;
}
for (int formatB = 2; formatB <= 36; formatB++) {
if(cnt > 1){
break;
}
if (formatA == formatB) continue; // A != B
try {
long numA = Long.parseLong(a, formatA);
long numB = Long.parseLong(b, formatB);
if (numA == numB) {
X = numA;
A = formatA;
B = formatB;
cnt++;
}
} catch (NumberFormatException | ArithmeticException e) {
continue;
}
}
}
if(cnt == 1) {
System.out.println(X + " " + A + " " + B);
}else if(cnt > 1){
System.out.println("Multiple");
}else {
// 가능한 경우가 없는 경우
System.out.println("Impossible");
}
}
}
21275번: 폰 호석만
만약 문제의 조건에 맞는 X, A, B가 유일하게 존재한다면, X를 십진법으로 표현한 수와 A와 B를 공백으로 나누어 출력하라. 만약 만족하는 경우가 2가지 이상이라면 "Multiple"을, 없다면 "Impossible"을
www.acmicpc.net
'Study > Problem Solving' 카테고리의 다른 글
[BOJ_21312] 홀짝 칵테일 (0) | 2023.11.27 |
---|---|
[BOJ_22493] 수 (1) | 2023.11.26 |
[BOJ_10171] 고양이 (1) | 2023.11.24 |
[BOJ_21919] 소수 최소 공배수 (2) | 2023.11.23 |
[BOJ_21920] 서로소 평균 (1) | 2023.11.22 |