https://www.acmicpc.net/problem/2745
간단한 구현 문제이다.
각 자릿수를 받은 후 toCharArray() 메소드로 char배열로 만든다.
그 후 한자리씩 검사한다.
char 배열의 요소가 숫자이면 아스키 코드값 '0'인 48을 빼고 각 자릿수에 해당하는 제곱 수를 곱해준 뒤 sum값에 곱한다.
숫자가 아니면 알파벳이므로 아스키 코드 값 'A'인 65를 빼고 같은 방식으로 해준다.
그리고 결과 값을 출력하면 된다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st= new StringTokenizer(br.readLine());
char[] N= st.nextToken().toCharArray();
int B=Integer.parseInt(st.nextToken());
int sum=0;
for (int i = 0; i < N.length; i++) {
if(N[i]>='0' && (int)N[i]<='9') {
sum += ((int)N[i]-48)*Math.pow(B,N.length-i-1);
}else {
sum+=((int)N[i]-55)*Math.pow(B,N.length-i-1);
}
}
bw.write(String.valueOf(sum));
bw.flush();
bw.close();
br.close();
}
}
https://www.acmicpc.net/problem/11005
2475번과 비슷한듯 다르다.
ArrayList를 생성 후 while문을 돌려 N을 B로 나눈 나머지 값 들을 저장한다.
반복이 될 때마다 N을 B로 나누고 N/B가 0보다 클때까지만 돌도록 한다.
나머지값이 10보다 작으면 '0'에 해당하는 아스키 코드 값을,
나머지값이 10보다 크면 'A'에 해당하는 아스키 코드값을 더하고 리스트에 추가한다.
출력은 리스트 끝 자리부터 0까지 반대로 출력되도록 해야한다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br =new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st= new StringTokenizer(br.readLine());
int N= Integer.parseInt(st.nextToken());
int B= Integer.parseInt(st.nextToken());
ArrayList<Character> arr = new ArrayList<>();
while(N>0) {
int res = N%B;
N/=B;
char a;
if(res>=10) {
a = (char) (res+'A'-10);
}else {
a = (char) (res+'0');
}
arr.add(a);
}
for (int i = arr.size()-1; i >= 0; i--) {
bw.write(arr.get(i));
}
bw.flush();
bw.close();
br.close();
}
}