200930 수 [BOJ] 11576, 2745, 11005
BOJ 11576
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Stack;
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 A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
int decimalNum = 0;
for(int i=0;i<m;i++) {
decimalNum += Integer.parseInt(st.nextToken()) * Math.pow(A, m-i-1);
}
Stack<Integer> stack = new Stack<>();
while(decimalNum != 0) {
stack.push(decimalNum%B);
decimalNum /= B;
}
int size = stack.size();
for(int i=0;i<size;i++){
bw.write(stack.pop() + " ");
}
bw.flush();
bw.close();
}
}
Stack
과 Math.pow()
사용하여 해결.
BOJ 2745
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Stack;
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());
String N = st.nextToken();
int B = Integer.parseInt(st.nextToken());
char[] arr = N.toCharArray();
Stack<Integer> stack = new Stack<>();
for(int i=0;i<arr.length;i++) {
if(arr[i] > 47 && arr[i] < 58) {
stack.push(arr[i] - 48);
} else if (arr[i] > 64 && arr[i] < 91) {
stack.push(arr[i] - 55);
}
}
int decimalNum = 0;
int size = stack.size();
for(int i=0;i<size;i++) {
decimalNum += Math.pow(B, i) * stack.pop();
}
bw.write(String.valueOf(decimalNum));
bw.flush();
bw.close();
}
}
정말 오랜만에 첫 제출에 맞았습니다!!
를 받았다..😭
BOJ 11005
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Stack;
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));
String[] input = br.readLine().split(" ");
int N = Integer.parseInt(input[0]);
int B = Integer.parseInt(input[1]);
Stack<Integer> stack = new Stack<>();
while(N != 0) {
stack.push(N % B);
N /= B;
}
int size = stack.size();
for(int i=0;i<size;i++) {
if(stack.peek() < 10) {
bw.write(stack.pop() + 48);
} else if (stack.peek() >= 10) {
bw.write(stack.pop() + 55);
}
}
bw.flush();
bw.close();
}
}
StringBuilder
클래스의 append()
와 마지막 출력 시 reverse()
를 사용해서 훨씬 더 간단하게 코드를 짤 수 있었다.
잘하는 사람들이 참 많군..
Author And Source
이 문제에 관하여(200930 수 [BOJ] 11576, 2745, 11005), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kyuhyunhan/200930-수-BOJ저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)