백준(Java)/23년 4월
[Java] 백준 - 1934번: 최소공배수
C0MPAS
2023. 4. 17. 15:22
4월 17일(월)-약수, 배수와소수2(1934번)
1934번: 최소공배수
두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있
www.acmicpc.net
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
문제점
// 수정 전
for(int i=0; i<T; i++)
{
StringTokenizer st = new StringTokenizer(br.readLine());
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
sb.append(A*B / GCD(A,B)).append('\n');
}
// 수정 후
StringTokenizer st;
for(int i=0; i<T; i++)
{
st = new StringTokenizer(br.readLine());
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
sb.append(A*B / GCD(A,B)).append('\n');
}
1. StringTokenizer st = ~ 과정을 for문안에서 바로 실행
-> 런타임 에러(InputMismatch) 가 발생
-> StringTokenizer st 부분을 for문 밖으로 위치시키는것으로 수정했더니 정답처리
-> 수정 전,후 차이를 분명히 예상하고 수정하지 못 함 -> 콘솔 입력에 대한 복습필요
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
풀이
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
StringTokenizer st;
for(int i=0; i<T; i++)
{
st = new StringTokenizer(br.readLine());
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
sb.append(A*B / GCD(A,B)).append('\n');
}
System.out.println(sb);
}
public static int GCD(int a, int b){
if(b==0)
{
return a;
}
else
{
return GCD(b, a%b);
}
}
}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ