Coding Test/Baekjoon - Java

1850: 최대공약수

_jordy 2021. 2. 15. 10:39

www.acmicpc.net/problem/1850

 

1850번: 최대공약수

모든 자리가 1로만 이루어져있는 두 자연수 A와 B가 주어진다. 이때, A와 B의 최대 공약수를 구하는 프로그램을 작성하시오. 예를 들어, A가 111이고, B가 1111인 경우에 A와 B의 최대공약수는 1이고, A

www.acmicpc.net

두 수의 최대공약수만큼 1을 반복하면 되는 문제

 

그런데 for문을 그냥 System.out.println("1");로 썼더니 시간초과가 발생했다.

그래서 stringbuilder클래스 사용하여 문제를 해결!

더보기

StringBuilder클래스=> 문자열 저장하기위한 메모리 공간有, 문자 추가/삭제 가능

public StringBuilder append(int i)

-> 기본 자료형 데이터를 문자열 내용에 추가

public StringBuilder delete(int start, int end)

-> 인덱스 start에서부터 end 이전까지의 내용을 삭제

public StringBuilder insert(int offset, String str)

-> 인덱스 offset의 위치에 str에 전달된 문자열 추가

public StringBuilder replace(int start, int end, String str)

-> 인덱스 start에서부터 end 이전까지의 내용을 str의 문자열로 대체

public StringBuilder reverse()

-> 저장된 문자열의 내용을 뒤집기

public String substring(int start, int end)

-> 인덱스 start에서부터 end 이전까지의 내용만 담은 String 인스턴스의 생성 및 반환

public String toString()

-> 저장된 문자열의 내용을 담은 String 인스턴스의 생성 및 반환

 


import java.util.*;
 
public class Main {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        long num1 = sc.nextLong();
        long num2 = sc.nextLong();
        
        long gcd = get_gcd(Math.max(num1, num2), Math.min(num1, num2));
        
        StringBuilder sb = new StringBuilder();
        for(int i = 0; i < gcd; i++)
            sb.append("1");
         
        System.out.println(sb.toString());
            
    }
    
    public static long get_gcd(long a, long b) {
        if(b==0) return a;
        else return get_gcd(b,a%b);
    }
}

#백준 #1850 #java #기초수학

'Coding Test > Baekjoon - Java' 카테고리의 다른 글

11005: 진법 변환 2  (0) 2021.02.15
9613: GCD합  (0) 2021.02.15
1934: 최소공배수  (0) 2021.02.15
2609: 최대공약수와 최소공배수  (0) 2021.02.15
10430: 나머지  (0) 2021.02.15