나의 풀이
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
String[] input = br.readLine().split(" ");
int n = Integer.parseInt(input[0]);
int m = Integer.parseInt(input[1]);
char[] ch = new char[36];
for (int i = 0; i < ch.length; i++) {
if (i < 10) {
ch[i] = (char) (i + '0');
} else {
ch[i] = (char) (i + 'A' - 10);
}
}
while (n > 0) {
sb.append(ch[n % m]);
n /= m;
}
System.out.println(sb.reverse());
}
}
아스키 코드를 활용해서 범위에 따라 숫자와 문자를 넣음
나의 풀이
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] input = br.readLine().split(" ");
String[] n = input[0].split("");
int m = Integer.parseInt(input[1]);
char[] ch = new char[36];
for (int i = 0; i < ch.length; i++) {
if (i < 10) {
ch[i] = (char) (i + '0');
} else {
ch[i] = (char) (i + 'A' - 10);
}
}
int answer = 0;
for (int i = 0; i < n.length; i++) {
int temp = 0;
for (int j = 0; j < ch.length; j++) {
if (n[i].equals(String.valueOf(ch[j]))) {
temp = j;
break;
}
}
answer += Math.pow(m, n.length - i - 1) * temp;
}
System.out.println(answer);
}
}
전 문제와 같지만 반대로 풀면 됨
나의 풀이
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main {
static Stack<Integer> stack = new Stack<Integer>();
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] conV = br.readLine().split(" ");
int conA = Integer.parseInt(conV[0]);
int conB = Integer.parseInt(conV[1]);
int m = Integer.parseInt(br.readLine());
int temp = conversionA(br.readLine().split(" "), conA);
conversionB(temp, conB);
int size = stack.size();
for (int i = 0; i < size; i++) {
System.out.print(stack.pop() + " ");
}
}
public static int conversionA(String[] temp, int conA) {
int value = 0;
for (int i = 0; i < temp.length; i++) {
value += (int) Math.pow(conA, temp.length - 1 - i) * Integer.parseInt(temp[i]);
}
return value;
}
public static void conversionB(int temp, int conB) {
while (temp != 0) {
stack.add(temp % conB);
temp /= conB;
}
}
}
A진법을 10진수로 변환 후 B진수로 변환 하는데 역순으로 출력하기 위해 스택 활용
나의 풀이
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int n = Integer.parseInt(br.readLine());
int i = 2;
while (n != 1) {
if (n % i == 0) {
sb.append(i + "\n");
n /= i;
} else {
i++;
}
}
System.out.println(sb.toString());
}
}
2로 나누어 떨어지면 또 2로 나누기 때문에 소수를 구할 필요없이 알아서 배수는 걸러짐 따라서 2부터 차례로 나눠보면 됨
진법 변환이나 소수 구하는 방법을 잘 알고 있을 테니 패스