문제
교재 풀이
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.util.*;
public class P1850_최대공약수 {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
long a = sc.nextLong();
long b = sc.nextLong();
long result = gcd(a, b);
while (result > 0) {
bw.write("1");
result--;
}
bw.flush();
bw.close();
}
public static long gcd(long a, long b) {
if (b == 0)
return a;
else
return gcd(b, a % b);
}
}
내 풀이) 24.6.21에 풀고 맞음
import java.util.*;
import java.io.*;
public class Main
{
public static void main(String[] args) throws IOException{
Scanner sc=new Scanner(System.in);
long a=sc.nextLong();
long b=sc.nextLong();
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
for(long i=0;i<gcd(a,b);i++){
bw.write("1");
}
bw.flush();
bw.close();
}
public static long gcd(long a, long b){
if(b==0)
return a;
else
return gcd(b,a%b);
}
}
//모든 자리가 1로만 이루어져있는 두 자연수 A와 B
//=> A와 B의 최대 공약수를 구해라
//
//A가 111이고, B가 1111인 경우에 A와 B의 최대공약수는 1이고,
//A가 111이고, B가 111111인 경우에는 최대공약수가 111이다.
//
//입력되는 수는 263보다 작은 자연수
// long으로 받으면 될 듯?
//첫째 줄에 A와 B의 최대공약수를 출력한다. 정답은 천만 자리를 넘지 않는다.
//
//접근법
// 교재 미리 훑어봐서 대략은 앎
// 즉 a,b값이 최대공약수만큼 1을 출력하면 된다는 뜻이다
// 출력할 때는 BufferedWriter를 사용해서 속도를 빠르게 한다
//슈도코드
// a,b를 long으로 입력받음
// a,b의 최대공약수를 구한다
// gcd(a,b)
// for gcd(a,b)만큼 반복해서
// bw.write(1)
// bw.flush
설명
교재의 가독성이 조금 더 좋지만, 일단 중요한 점은 아니니까, 참고만 하기.
코테 풀 때 억지로 클린 코드 만들려고 하려는 건 사치니까
'CODING TEST > BOJ' 카테고리의 다른 글
[java] 문제 044 (백준 1033) (0) | 2024.06.21 |
---|---|
[java] 문제 042 (백준 1934) (0) | 2024.06.21 |
[java] 문제 041 (백준 11689) (0) | 2024.06.21 |
[java] 문제040 (백준 1016) (0) | 2024.06.20 |
[java] 문제 039 (백준 1747) (0) | 2024.06.20 |