개발후라이
개발후라이
개발후라이
  • 분류 전체보기 (286)
    • Web Front End (75)
      • Javascript & Typescript (26)
      • React (12)
      • Vue (4)
      • Nodejs (1)
      • HTML (6)
      • CSS (7)
      • HTTP (6)
      • 책 - Review (8)
    • TIL (0)
    • Problem Solved (135)
      • 알고리즘 (4)
      • BOJ (67)
      • Programmers (8)
      • HackerRank (33)
      • LeetCode (23)
    • 회고 (4)
      • 오늘의 회고 (16)
      • 주간 회고 (15)
      • 월간 회고 (7)
      • WakaTime (9)
    • Git (3)
    • 기타 (15)
      • 취업 (5)
      • 자격증 (1)

블로그 메뉴

  • GitHub
  • LinkedIn
  • 홈

인기 글

태그

  • JavaScript
  • 개발자
  • 오늘의회고
  • 릿코드
  • 자바스크립트
  • 프론트엔드
  • 회고
  • TypeScript
  • 노마드북클럽
  • 노개북

최근 댓글

최근 글

전체 방문자
오늘
어제

티스토리

hELLO · Designed By 정상우.
개발후라이

개발후라이

Problem Solved/BOJ

[BOJ][Java] 2981번 - 검문

2020. 2. 5. 20:58
반응형

문제

백준 2981번 문제: 검문

문제 설명

N개의 수를 M으로 나누었을 때, 나머지가 전부 같은 M을 찾는 문제

도저히 모르겠다. 아무래도 js로 다시 풀어야겠다.

성공 코드(참고: https://pangsblog.tistory.com/62)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader((System.in)));

        int n = Integer.parseInt(br.readLine());
        int numbers[] = new int[n];

        for (int i = 0; i < n; i++) {
            numbers[i] = Integer.parseInt(br.readLine());
        }
        br.close();
        Arrays.sort(numbers);

        int gcdNum = numbers[1] - numbers[0];

        for(int i=2; i < n; i++) {
            int dist1 = numbers[i] - numbers[i-1];

            gcdNum = gcd(gcdNum, dist1);
        }

        searchM(gcdNum);
    }

    public static int gcd(int first, int second) {
        if (second <= 0) return first;

        int temp = first;
        first = second;
        second = temp % second;

        return gcd(first, second);
    }

    public static void searchM(int number) {
        List<Integer> list = new ArrayList<>();
        list.add(number);

        for (int i = 2; i <= Math.sqrt(number); i++) {
            if (number % i == 0) {
                if (i == number / i) {
                    list.add(i);
                }
                else {
                    list.add(i);
                    list.add(number / i);
                }
            }
        }
        Collections.sort(list);

        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < list.size(); i++) {
            sb.append(list.get(i) + " ");
        }
        System.out.println(sb.toString());
    }        
}
반응형
저작자표시 (새창열림)
    'Problem Solved/BOJ' 카테고리의 다른 글
    • [BOJ][Java] 10773번 - 제로
    • [BOJ][Java] 10828번 - 스택
    • [BOJ][Java] 2609번 - 최대공약수와 최대공배수
    • [BOJ][Java] 11653번 - 소인수분해
    개발후라이
    개발후라이
    어제보다 오늘 발전하기 위한 공간 https://github.com/choisohyun

    티스토리툴바