알고리즘 117

시간 복잡도에 대하여

시간 복잡도란? 빅-오 표기법 최악의 경우 걸리는 시간 시간 복잡도 그래프 이진탐색 O(logN) 선형탐색 O(N) 정렬 O(N logN) 조합 O(N^2) 순열 O(N!) 입력 데이터 개수별 사용 가능한 시간 복잡도 알고리즘 N 값에 따라 알고리즘 적용 시 최대 1억번이 안넘어야 한다. 1억이 넘는다 ? → 빨리 다른 알고리즘을 찾아봐야한다. 잘못된 문제풀이 문제 확인 → 풀이 고안 & 작성→ 제출 → 완료 올바른 물제풀이 문제 확인 → 풀이 고안 → 효율성 체크 → 풀이 작성 → 제출 → 완료문제풀이 방법론 시간 복잡도 계산하기 어림짐작하기 >> 반복문의 횟수를 계산해보자. 시간 복잡도를 줄이는 방법 정렬된 배열 arr에서 특정 원소의 위치를 찾을 때 전체 순회O(N) → 이진탐색 O(logN) 배열..

알고리즘 2023.07.10

코딩 테스트 준비하기 전에 봐야할 글

코딩테스트 개요 확인 및 주의사항 코딩테스트란? 지원자가 알고있는 자료 구조와 알고리즘 등을 활용 → 문제해결능력을 평가하는 시험 제한 시간 내 푼 문제 개수 + 시간으로 평가 → 빠르고 정확하게 풀어야 한다. 보는 이유 문제해결과정 주어진 문제를 정확하게 파악하는것이 중요 요구하는 방향으로 문제를 해결하려고 하는가 똑같은 결과지만 빠르고 효율적으로 코드의 실행 시간에도 제약이 있다. → 빅오를 배우자. 개발자 실력 = 막연한 구현 (x) 효율적 설계 (o) 기능 구현은 걍 필수다. 빠르고 많이 (X) → 정확하고 효율적으로 (O) 코딩 & 디버깅 잘 짠 코드란? 가독성 + 효율성 가독성 : 코드 역할에 집중 → 메서드나 클래스로 분해하자. 효율성 : 메서드 → 사칙연산으로 해결 흔히 하는 실수 충분한 ..

알고리즘 2023.07.05

[백준] 24479번 알고리즘 수업 - 깊이 우선 탐색 1 #Java

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collections; import java.util.StringTokenizer; public class Main { static int N,M,R,idx; static ArrayList[] edges; static int [] answer; static boolean [] visited; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedRead..

[백준] 1676번 팩토리얼 0의 개수 #Java

소인수분해, 누적합 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; 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 answer = 0; while (n >= 5) { answer += n / 5; n /= 5; } System.out.println(answer); } }

[백준] 1309번 동물원 #Java

내가 푼 풀이가 틀렸다고 나왔길래 정답을 찾아서 비교해보는 과정을 거쳤다. 괄호를 붙이지 않아 우선순위 적용이 잘못 되었었다. - 수정 전 dp2[0][i] = dp2[0][i-1]+dp2[1][i-1]+dp2[2][i-1] % 9901; dp2[1][i] = dp2[0][i-1]+dp2[2][i-1] % 9901; dp2[2][i] = dp2[0][i-1]+dp2[1][i-1] % 9901; - 수정 후 dp2[0][i] = (dp2[0][i-1]+dp2[1][i-1]+dp2[2][i-1]) % 9901; dp2[1][i] = (dp2[0][i-1]+dp2[2][i-1]) % 9901; dp2[2][i] = (dp2[0][i-1]+dp2[1][i-1]) % 9901; - 풀이 코드 import java..

알고리즘/DP 2022.05.30