문자열 계산시 알아둘 것
- '0' - '0'은 0이다.
- '1' - '0'은 1이다.
마찬가지로- 'A'-'A'는 0이다.
- 'Z'-'A'는 35이다.
이렇게 문자열 간 아스키 코드 차이를 계산해서 숫자 값으로 표시할 수 있다.- 'a'-'A'는 32이다.
이걸로 대문자 소문자 변환도 가능하다.
진수 계산법
10진수인 경우
123일때 값을 계산하는 과정이
((110)+2)10 +3이다.
즉, B진수 일때, 앞의 자리수는 B를 거듭 제곱해주면 되는 것이다.
answer = answer*B + 앞자리수
이 공식을 반복해준다고 볼 수 있다.
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
long answer = 0;
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
String N = st.nextToken();
int B = Integer.parseInt(st.nextToken());
for(int i=0;i<N.length();i++) {
char c = N.charAt(i);
if(c>= '0' && c<= '9') {
answer = answer * B + (c-'0');
} else {
answer = answer * B + (c-'A'+10);
}
}
bw.write(answer+"\n");
bw.flush();
bw.close();
br.close();
}
}