[백준, 자바] 9613번 - GCD 합

jinvicky·2024년 4월 21일
0

ALG

목록 보기
32/62
post-thumbnail

최종 코드(정답)

package baekjoon;
import java.io.*;
import java.util.Scanner;

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();

        for (int i = 1; i <= T; i++) {
            String[] array = br.readLine().split(" ");
            long gcdSum = 0;

            for (int j = 1; j < array.length; j++) { //0번째는 탐색에서 제외해야 함. (길이를 나타내는 걸)
                for (int k = j + 1; k < array.length; k++) {
                    System.out.println("j== k = " +( j== k));
                    if (j != k) { // 이 부분이 없어서 틀렸다.
                        gcdSum += gcd2(Integer.parseInt(array[j]), Integer.parseInt(array[k]));
                    }
                }
            }
            sb.append(gcdSum).append("\n");
        }
        System.out.println(sb);
    }
    public static int gcd2(int v1, int v2) {
        if (v2 == 0)  {
            return v1;
        }
        return gcd2(v2, v1 % v2);
    }
}

문제 링크
https://www.acmicpc.net/problem/9613

결과
오답

원인

  • 어떻게 풀어야 하는지는 맞았는데 입력값 맨 앞의 수까지 연산에 넣어서 망함;; (문제좀 잘 읽으셈)
  • j와 k 이중 for문 돌릴 때 나 자신과의 중복 연산(j==k)을 방지했어야 했는데 그걸 안해서 틀림.
  • 문제 해설보다 알게 된 건데 gcd 합계를 저장하는 변수의 타입이 long이어야 함.

코멘트
gcd2()의 2는 의미가 없다;;(중복나서 그럼)
문제 자체 난이도는 어려운 편은 아니다;; 다들 long 타입에서 걸리는 듯.

profile
일단 쓰고 본다

0개의 댓글