반응형
1. 파이썬(Python)
1) 첫번째 풀이(오답)
import sys
input = sys.stdin.readline
a, b, n = map(int, input().split())
x = a / b
x = x * pow(10, n)
y = int(x / 10) * 10
print(int(x-y))
런타임 에러(OverflowError)가 발생했다. 찾아보니 파이썬은 소수점 15자리까지만 표시하기에 n이 15가 넘어가면 오류가 발생한다.
따라서 오류가 발생한다.
2) 두번째 풀이(정답)
a, b, n = map(int, input().split())
for i in range(n):
a = (a % b) * 10
result = a // b
print(result)
처음부터 다시 생각하여 실제로 나눗셈을 할 때처럼 a를 b로 나눈 나머지를 구하고 그 값에 10을 곱하여 a에 다시 대입한다.
그리고 result에 a를 b로 나눈 몫을 대입한다.
예를 들어, a = 32, b = 7, n = 4라고 하면
i = 0 ) a % b = 4이므로 a = 40, result = 5
i = 1 ) a % b = 5이므로 a = 50, result = 7
i = 2 ) a % b = 1이므로 a = 10, result = 1
i = 3) a % b = 3이므로 a = 30, result = 4
결과적으로 print(result)를 출력하면 4가 나온다.
2. 자바(Java)
1) 풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
int n = Integer.parseInt(st.nextToken());
int result = 0;
for(int i = 1; i <= n; i++) {
a = (a % b) * 10;
result = (a / b);
}
System.out.println(result);
}
}
Scanner는 처리속도가 느리기에 BufferedReader와 StringBuilder을 사용하여 입력을 받고, StringTokenizer을 이용하여 입력받은 문자열을 " "(공백)을 간격으로 a, b, n으로 나누어 입력받으며, Integer.parseInt를 사용하여 정수로 변환한다.
그 후, 파이썬에서와 같이 for 반복문을 이용하여 result를 구한 후 System.out.println(result);를 이용하여 출력한다.
반응형
'Algorithm > baekjoon' 카테고리의 다른 글
[백준 11866 파이썬(Python) / 자바(Java)] 요세푸스 문제 0 (0) | 2023.06.28 |
---|---|
[백준 1316 파이썬(python)/자바(java)] 그룹 단어 체커 (0) | 2023.06.21 |
[백준 1251 파이썬(python)/자바(java)] 단어 나누기 (0) | 2023.06.19 |
[백준 1181 파이썬/python] 단어 정렬 (0) | 2023.06.11 |
[백준 10250 자바/java] ACM 호텔 (0) | 2023.05.26 |