엘리스 알고리즘 코드 챌린지 Day2(07월 09일) - Java

2024. 7. 9. 10:39·Web/Java
반응형

Day2

나의 제출

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        StringTokenizer st = new StringTokenizer(br.readLine());
        int length = Integer.parseInt(st.nextToken());
        int count = Integer.parseInt(st.nextToken());

        st = new StringTokenizer(br.readLine());
        int[] arr = new int[length];
        for (int i=0; i<length; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
        }

        for (int i=0; i<count; i++) {
            st = new StringTokenizer(br.readLine());
            int start = Integer.parseInt(st.nextToken());
            int end = Integer.parseInt(st.nextToken());
            int at = Integer.parseInt(st.nextToken());

            int[] temp = Arrays.copyOfRange(arr, start-1, end);
            Arrays.sort(temp);

            bw.write(String.valueOf(temp[at-1]));
            bw.newLine();
        }

        bw.flush();
        bw.close();
    }
}

 

알게된 내용

  • 유클리드 호제법
// 최대공약수
public static int GCD(int a, int b) {
    while (b != 0) {
        int temp = b;
        b = a % b;
        a = temp;
    }

    return a;
}

 

어떤 두 수 a와 b가 있고 a와 b를 나눈 나머지를 r이라 하였을 때, a와 b의 최대공약수는 b와 r의 최대공약수와 같다.

ex) a = 1071, b = 1029

1. 1071%1029 = 42

2. 1029%42 = 21

3. 42%21 = 0 이므로

1071과 1029의 최대공약수는 21

 

// 최소공배수
public static int LCM(int a, int b) {
    int gcd = GCD(a, b);
    return (a * b) / gcd;
}

 

어떤 두 수의 곱은 두 수의 최소공배수와 최대공약수의 곱과 같다.

a * b = GCD(a, b) * LCM(a, b)

 

  • 에라토스테네스의 체
boolean[] isPrime = new boolean[N];
Arrays.fill(isPrime, true); // true인 index는 소수
for (int i=2; i<=N; i++) {
    // 지우지 않은 수 찾음
    if (isPrime[i]) {
        // 찾은 수의 배수를 반복
        for (int j=i*2; i<=N; j+=i) {
            // j는 소수가 아니므로 false
            if (isPrime[j]) isPrime[j] = false;
        }
    }
}
반응형
저작자표시 비영리 변경금지 (새창열림)

'Web > Java' 카테고리의 다른 글

엘리스 알고리즘 코드 챌린지 Day5(07월 12일) - Java  (0) 2024.07.12
엘리스 알고리즘 코드 챌린지 Day4(07월 11일) - Java  (0) 2024.07.11
엘리스 알고리즘 코드 챌린지 Day3(07월 10일) - Java  (0) 2024.07.10
엘리스 알고리즘 코드 챌린지 Day1(07월 08일) - Java  (1) 2024.07.08
'Web/Java' 카테고리의 다른 글
  • 엘리스 알고리즘 코드 챌린지 Day5(07월 12일) - Java
  • 엘리스 알고리즘 코드 챌린지 Day4(07월 11일) - Java
  • 엘리스 알고리즘 코드 챌린지 Day3(07월 10일) - Java
  • 엘리스 알고리즘 코드 챌린지 Day1(07월 08일) - Java
helperwoo
helperwoo
\ೕ( ・ㅂ・)و /
  • helperwoo
    WooLog
    helperwoo
  • 전체
    오늘
    어제
    • All (55)
      • Web (25)
        • PHP (6)
        • Java (5)
        • Javascript (8)
        • Laravel (2)
        • Spring Boot (0)
        • React.js (1)
        • Electron.js (1)
        • Vue.js (1)
        • Nest.js (1)
      • Mobile (2)
        • Flutter (2)
      • SQL (1)
        • MySQL (4)
      • Docker (6)
      • Server (7)
      • Git (2)
      • Tool (3)
      • AI (2)
      • Tip (3)
      • Log (0)
  • 블로그 메뉴

    • 링크

      • Github
    • 공지사항

    • 인기 글

    • 태그

      JavaScript
      websocket
      image
      알고리즘
      nginx
      ignorecase
      git
      http
      flutter
      데이터베이스
      frankenphp
      엘리스
      deepseek
      vscode
      프로그래머스
      apache
      php
      DB연동
      docker
      챌린지
      Compose
      Laravel
      with
      recursive
      dart
      MYSQL
      CTE
      코드
      ollama
      CLI
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    helperwoo
    엘리스 알고리즘 코드 챌린지 Day2(07월 09일) - Java
    상단으로

    티스토리툴바