[Do it! 알고리즘 코딩 테스트 자바] 그리디 알고리즘, 소수 구하기, 유클리드 호제법, 그래프 [13~18일차]

2026. 3. 15. 22:59·Java

그리디 알고리즘

- 정의: 현재 상태에서 보는 선택지 중 최선의 선택지가 전체 선택지 중 최선의 선택지라고 가정함

- 핵심 이론: 해 선택 -> 적절성 검사(제약 조건과 맞는지 확인) -> 해 검사 -> 최선의 선택지가 아닌 경우, 다시 해 선택!

 

소수 구하기

1. 에라토스테네츠의 체

- 핵심 이론: 구하고자 하는 소수의 범위만큼 1차원 배열 생성 -> 2부터 시작하며 현재 선택한 숫자가 지워지지 않는 숫자라면 해당 숫자의 배수에 해당하는 수를 배열에서 끝까지 탐색하며 제거함(처음으로 선택한 숫자는 지우지 않음)

-> 2를 반복한 후 배열에 남은 수 모두 출력함

 

2. 오일러 피

- 핵심 이론: 구하고자 하는 오일러 피의 범위만큼 배열을 초기화함 -> 2부터 시작해서 현재 배열의 값과 인덱스가 같으면 현재 선택된 숫자의 배수에 해당하는 수를 배열 끝까지 탐색하며 P[i] = P[i] - P[i]/K를 수행(i는 K의 배수) -> 배열 끝까지 앞의 과정을 반복함

 

 

유클리드 호제법

- 정의: 두 수의 최대 공약수를 구하는 알고리즘

- 핵심 이론: 큰 수를 작은 수로 나누는 나머지 연산을 수행함 -> 앞 단계에서의 작은 수와 나머지 연산 결과값으로 나머지 연산을 또 수행함 -> 나머지가 0이 되는 순간의 작은 수를 최대 공약수로 선택함

 

확장 유클리드 호제법

- 정의: 방정식의 해를 구함 -> ax + by = c

- 핵심이론: c % gcd(a, b) = 0인 경우에만 정수해를 가짐 -> c가 a와 b의 최대 공약수의 배수인 경우에만 정수해를 가짐

 

그래프의 표현

- 에지 리스트: 에지를 중심으로 그래프를 표현함 -> 출발 노드와 도착 노드, (혹은 가중치도)를 저장하여 에지를 표현함

- 인접 행렬: 2차원 배열로 자료구조로 이용하여 그래프를 표현함

-> 에지 리스트와 달리 노드 중심으로 표현함(노드 5개 -> 5*5 인접 행렬로 표현)

- 인접 리스트: ArrayList로 그래프를 표현함 -> 노드 개수만큼 ArrayList를 선언함

 

유니온 파인드

- 정의: 일반적으로 여러 노드가 있을 때 특정 2개의 노드를 연결해서 1개의 집합으로 묶는 union 연산과 두 노드가 같은 집합에 속해 있는지 확인하는 find 연산으로 구성되어 있는 알고리즘

- 핵심 이론: union 연산 = 각 노드가 속한 집합을 1개로 합치는 연산 / find 연산 = 특정 노드 a에 관해 a가 속한 집합의 대표 노드를 반환

 

 

 

저작자표시 (새창열림)

'Java' 카테고리의 다른 글

[Java] 연산자 종류 / 참조 연산자 / instanceof / 논리 연산자 / 오류 주의  (0) 2026.03.17
[Java] 원시 타입과 참조 타입의 차이 / 데이터 타입 / 리터럴  (3) 2026.03.16
[Do it! 알고리즘 코딩 테스트 자바] 이진 탐색 (12일차)  (0) 2026.03.08
[Do it! 알고리즘 코딩 테스트 자바] BFS 너비 우선 탐색 - 백준 1260(11일차)  (0) 2026.03.08
[Do it! 알고리즘 코딩 테스트 자바] 백트래킹을 써야하는 이유(feat.DFS) - 백준 11724/2023/13023/15649/9663(10일차)  (0) 2026.03.08
'Java' 카테고리의 다른 글
  • [Java] 연산자 종류 / 참조 연산자 / instanceof / 논리 연산자 / 오류 주의
  • [Java] 원시 타입과 참조 타입의 차이 / 데이터 타입 / 리터럴
  • [Do it! 알고리즘 코딩 테스트 자바] 이진 탐색 (12일차)
  • [Do it! 알고리즘 코딩 테스트 자바] BFS 너비 우선 탐색 - 백준 1260(11일차)
미우딩
미우딩
다양한 프로그래밍 언어를 공부하고 있는 공대생입니다! Python, Java, C언어를 주로 공부하고 있으며 Figma를 통한 디자인도 종종 올릴 예정입니다.
  • 미우딩
    미우의 코딩 기록
    미우딩
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • Java (47)
      • C언어 (0)
      • 대외활동 (5)
      • Spring (4)
      • 프로젝트 (2)
      • 앱개발 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    IT #코딩테스트 #알고리즘 #투포인터 #시간제한 #Scanner #BufferedReader #StringTokenizer
    IT #BFS #코딩테스트 #구현 #큐 #재귀함수
    android #java #kotlin #상태관리
    push #pop #StringBuffer
    IT #코딩테스트 #이진탐색 #알고리즘
    IT #알고리즘 #코딩테스트 #선택정렬 #내림차순정렬 #최댓값
    IT #코딩테스트 #알고리즘 #슬라이딩윈도우 #투포인터 #함수
    IT #백준 #알고리즘 #코딩테스트 #배열 #형변환 #평균구하기
    IT #코딩테스트 #알고리즘 #버블정렬 #오름차순
    IT #코딩테스트 #알고리즘 #백준 #투포인터 #배열
    IT #코딩테스트 #알고리즘 #스택 #
    IT #알고리즘 #코딩테스트 #퀵정렬 #오름차순정렬
    BufferedReader
    IT #코딩테스트 #알고리즘 #DFS #재귀함수 #무방향그래프
    IT #큐 #알고리즘 #코딩테스트 #자바 #선입선출
    IT #백준 #코딩테스트 #알고리즘 #구간합 #반복문
    IT #알고리즘 #그리디알고리즘 #탐욕알고리즘 #코테
    Spring #정적컨텐츠 #MVC #템플릿엔진 #API #애너테이션
    android #java #kotlin #compose
    java #android #개발자
    IT #백준 #알고리즘 #코딩테스트 #배열 #형변환 #아스키코드
    IT #알고리즘 #코딩테스트 #삽입정렬 #오름차순정렬
    IT #알고리즘 #코딩테스트 #우선순위큐 #힙 #절댓값 #오름차순 #정렬
    IT #알고리즘 #코딩테스트 #DFS
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
미우딩
[Do it! 알고리즘 코딩 테스트 자바] 그리디 알고리즘, 소수 구하기, 유클리드 호제법, 그래프 [13~18일차]
상단으로

티스토리툴바