본문 바로가기

알고리즘117

시간 복잡도에 대하여 시간 복잡도란? 빅-오 표기법 최악의 경우 걸리는 시간 시간 복잡도 그래프 이진탐색 O(logN) 선형탐색 O(N) 정렬 O(N logN) 조합 O(N^2) 순열 O(N!) 입력 데이터 개수별 사용 가능한 시간 복잡도 알고리즘 N 값에 따라 알고리즘 적용 시 최대 1억번이 안넘어야 한다. 1억이 넘는다 ? → 빨리 다른 알고리즘을 찾아봐야한다. 잘못된 문제풀이 문제 확인 → 풀이 고안 & 작성→ 제출 → 완료 올바른 물제풀이 문제 확인 → 풀이 고안 → 효율성 체크 → 풀이 작성 → 제출 → 완료문제풀이 방법론 시간 복잡도 계산하기 어림짐작하기 >> 반복문의 횟수를 계산해보자. 시간 복잡도를 줄이는 방법 정렬된 배열 arr에서 특정 원소의 위치를 찾을 때 전체 순회O(N) → 이진탐색 O(logN) 배열.. 2023. 7. 10.
코딩 테스트 준비하기 전에 봐야할 글 코딩테스트 개요 확인 및 주의사항 코딩테스트란? 지원자가 알고있는 자료 구조와 알고리즘 등을 활용 → 문제해결능력을 평가하는 시험 제한 시간 내 푼 문제 개수 + 시간으로 평가 → 빠르고 정확하게 풀어야 한다. 보는 이유 문제해결과정 주어진 문제를 정확하게 파악하는것이 중요 요구하는 방향으로 문제를 해결하려고 하는가 똑같은 결과지만 빠르고 효율적으로 코드의 실행 시간에도 제약이 있다. → 빅오를 배우자. 개발자 실력 = 막연한 구현 (x) 효율적 설계 (o) 기능 구현은 걍 필수다. 빠르고 많이 (X) → 정확하고 효율적으로 (O) 코딩 & 디버깅 잘 짠 코드란? 가독성 + 효율성 가독성 : 코드 역할에 집중 → 메서드나 클래스로 분해하자. 효율성 : 메서드 → 사칙연산으로 해결 흔히 하는 실수 충분한 .. 2023. 7. 5.
[백준] 9237번 이장님 초대 #Java import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; 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()); Integer [] arr = new Integer [N]; StringTokenizer s.. 2022. 6. 21.
[백준] 4889번 안정적인 문자열 #Java import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int idx = 1; while (true) { String s = br.readLine(); if(s.startsWith("-")) break; System.out.printf("%d. %d\n",idx, solution(s.. 2022. 6. 21.