알고리즘/정리

알고리즘/정리

구현

더보기 import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // N을 입력받기 int n = sc.nextInt(); sc.nextLine(); // 버퍼 비우기 String[] plans = sc.nextLine().split(" "); int x = 1, y = 1; // L, R, U, D에 따른 이동 방향 int[] dx = {0, 0, -1, 1}; int[] dy = {-1, 1, 0, 0}; char[] moveTypes = {'L', 'R', 'U', 'D'}; // 이동 계획을 하나씩 확인 for (int i = 0; i < pla..

알고리즘/정리

그리디 유형 문제

문제 1 코드 더보기 import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // N, K를 공백을 기준으로 구분하여 입력 받기 int n = sc.nextInt(); int k = sc.nextInt(); int result = 0; while (true) { // N이 K로 나누어 떨어지는 수가 될 때까지만 1씩 빼기 int target = (n / k) * k; //int라 몫 부분만 target에 들어감. 25/3=8.3333 -> 8 * 3 = 24가 target에 입력됨 result += (n - target); n = target; // ..

알고리즘/정리

그리디

그리디 알고리즘(탐욕법) 현재 상황에서 지금 당장 좋은 것만 고르는 방법 일반적인 그리디 알고리즘은 문제를 풀기 위한 최소한의 아이디어를 떠올릴 수 있는 능력을 요구함 그리디 해법은 정당성 분석이 중요함 단순히 가장 좋아 보이는 것을 반복적으로 선택해도 최적의 해를 구할수 있는지 검토 일반적인 상황에서 그리디 알고리즘은 최적의 해를 보장할 수 없을 때가 많다. 하지만 코딩 테스트에서의 대부분의 그리디 문제는 탐욕법으로 얻은 해가 최적의 해가 되는 상황에서, 이를 추론할 수 있어야 풀리도록 출제된다. 코드 더보기 public class Main { public static void main(String[] args) { int n = 1260; int cnt = 0; int[] coinTypes = {50..

알고리즘/정리

시간 복잡도와 빅오 표기법(Big-O Notation)

시간 복잡도 코드의 실행 시간이 어떤 요인으로 결정되는지 나타내는 시간과 입력 데이터의 함수 관계 빅오 표기법 알고리즘이 겪을 수 있는 최악의 경우에 걸리는 시간과 입력 간의 상관관계를 표기 1초라는 시간이 주어졌을 때 입력 조건에서 명시되어 있는 최악의 경우를 시간 복잡도에 대입해 보았을 때 1억이 넘지 않은다면 실행 시간이 1초보다 빠른 충분히 효율적인 코드일 가능성이 높다. N값이 최대 1만이라고 했을 때 작성한 코드가 O(N2)의 시간 복잡도를 갖는다면 N을 대입했을 때 1억이 되기 때문에 시간 제한을 맞추지 못할 가능성이 매우 크다. (1억은 절대적인 기준이 아니다.) 시간 복잡도 계산하기 보통 입력되는 값들을 순회하면서 처리하는 데 반복문이 사용된다. 따라서 사용되는 반복문이 어떤 값에 비례해..

ewok
'알고리즘/정리' 카테고리의 글 목록 (3 Page)