Algorithm 9

이진 탐색

이진 탐색 알고리즘 순차 탐색: 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 확인하는 방법 이진 탐색: 정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법 이진 탐색은 시작점, 끝점, 중간점을 이용하여 탐색 범위를 설정한다 이진 탐색 동작 예시 이미 정렬된 10개의 데이터 중에서 값이 4인 원소를 찾는 예시를 살펴보자 [Step 1] 시작점: 0, 끝점: 9, 중간점: 4 (소수점 이하 제거) [Step 2] 시작점:0, 끝점: 3, 중간점: 1 (소수점 이하 제거) [Step 3] 시작점: 2, 끝점: 3, 중간점: 2 (소수점 이하 제거) 이진 탐색의 시간 복잡도 단계마다 탐색 범위를 2로 나누는 것과 동일하므로 연산 횟수는 log₂𝑁에 비례한다 예..

Algorithm 2023.08.12

알고리즘 문법 정리

Long 문법 String을 Long으로 변환 Long.parseLong(String s); String 문법 String.valueOf(int i) : i를 string i로 변환시켜준다. String.substring(int i , int n) : i index위치부터 n - 1 index위치까지 자른 String을 반환한다. String.split(String s) : s를 기준으로 문자열을 잘라준다. String.split(String s, int i) : s를 기준으로 문자열을 i의 크기만큼 잘라준다. // 01-23-45일 경우 split("-",2); 라면 str[0] = 01 str[1] = 23-45의 값을 가지게 된다. 치환 10진수 -> 2진수 String : Integer.toBin..

Algorithm 2023.02.13

2차원으로 만들기.java

class Solution { public int[][] solution(int[] num_list, int n) { int[][] answer = new int[num_list.length / n][n]; for(int i = 0; i < num_list.length / n; i++){ for(int j = 0; j < n; j++){ answer[i][j] = num_list[n * i + j]; } } return answer; } } 코드에서의 이중 반복문으로 인해서 불필요한 로직이 생겼고 해당 코드를 아래와 같이 길이의 값을 length를 선언후 저장하여 이중 반복문을 해결 하였다. class Solution { public int[][] solution(int[] num_list, int n)..

Algorithm 2023.02.12

공간 복잡도

💡 공간이 얼마나 차지되는 지 확인 하는 방법 def find_max_occurred_alphabet(string): alphabet_array = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "x", "y", "z"] max_occurrence = 0 max_alphabet = alphabet_array[0] for alphabet in alphabet_array: # alphabet_array 의 길이(26)만큼 아래 연산이 실행 occurrence = 0 # 대입 연산 1번 실행 for char in string: # string 의 길이만큼 아래..

Algorithm 2022.08.05