[Java] 백준 1417번 문제 (국회의원 선거)
자료구조 & 알고리즘/BOJ2023. 10. 1. 16:53[Java] 백준 1417번 문제 (국회의원 선거)

문제설명 소스코드 import java.util.Arrays; import java.util.Collections; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int me = sc.nextInt(); //나 == 다솜 Integer arr[] = new Integer[N-1]; //내림차순 정렬을 위해 박싱 int count = 0; //매수해야 하는 사람 수 for(int i = 0; i < arr.length; ++i) arr[i] = sc.nextInt(); while(true) { ..

[Java] 백준 1026번 문제 (보물)
자료구조 & 알고리즘/BOJ2023. 9. 21. 16:24[Java] 백준 1026번 문제 (보물)

문제설명 소스코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util.Collections; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int A[] = new int[n]; Integer B[] = new I..

[DB 이론] 데이터베이스 기본 개념
데이터베이스/데이터베이스 이론2023. 9. 16. 18:37[DB 이론] 데이터베이스 기본 개념

이 글은 데이터베이스 개론 (저자 김연희)의 내용을 개인적으로 정리하는 글임을 알립니다. 데이터베이스의 필요성 데이터와 정보 데이터 : 현실 세계에서 단순히 관찰하거나 측정하여 수집한 시실이나 값으로, 자료라고도 한다. 정보 : 데이터를 의사 결정에 유용하게 활용할 수 있도록 처리하여 체계적으로 조직한 결과물이다. 데이터에서 정보를 추출하는 과정 또는 방법을 정보 처리라 한다. 즉, 정보 처리는 데이터를 상황에 맞게 분석하거나 해석하여 데이터 간의 의미 관계를 파악하는 것이다. 현재성과 정확성을 보장하는 가치 있는 정보를 얻으려면 현재 상황을 정확히 관찰하고 측정하여 의미 있는 데이터를 많이 수집해야 한다. 하지만 데이터를 많이 수집하는 데 그쳐서는 안된다. 수집한 데이터를 효율적으로 저장했다가 필요할 ..

[자료구조] 해시 테이블
자료구조 & 알고리즘/자료구조2023. 9. 5. 21:14[자료구조] 해시 테이블

이 글은 누구나 자료 구조와 알고리즘(저자 : 제이 웬그로우)의 내용을 개인적으로 정리하는 글임을 알립니다. 패스트푸드점에서 손님이 음식을 주문하는 프로그램을 작성 중이고, 음식마다 각각 가격이 있는 메뉴를 구현하고 있다고 상상해 보자. 메뉴 배열 안에 메뉴의 이름과 가격을 포함하는 배열이 또 있다고 가정하면, 메뉴 배열안에 있는 하위 배열을 찾는데 O(N)의 단계가 걸린다. 정렬된 배열이라면 이진탐색을 통해O(logN)이 걸린다. 하지만 해시 테이블을 사용하면 데이터를 O(1)만에 룩업할 수 있다. 해시 테이블 해시 테이블은 다양한 프로그래밍 언어에서 서로 다른 이름으로 불린다. 해시, 맵, 해시맵, 딕셔너리, 연관 배열 등의 이름을 갖는다. 대부분의 프로그래밍 언어는 해시 테이블(hash table)..

[알고리즘] 코드 효율성과 빅 오(Big O)
자료구조 & 알고리즘/알고리즘2023. 9. 2. 00:38[알고리즘] 코드 효율성과 빅 오(Big O)

이 글은 누구나 자료 구조와 알고리즘(저자 : 제이 웬그로우)의 내용을 개인적으로 정리하는 글임을 알립니다. 다양한 빅오 카테고리 단어 생성기 이 예제는 문자 배열로부터 두 글자짜리 모든 문자열 조합을 모으는 알고리즘이다. 예를 들어, [a,b,c,d]라는 배열이 주어지면 다음과 같은 문자열 조합을 포함하는 새 배열을 리턴한다. 아래는 이 알고리즘을 자바스크립트로 구현한 코드이다. 이 알고리즘의 효율성은 바깥 루프는 N개 원소를 모두 순회하고 각 원소마다 안쪽 루프는 다시 N개 원소를 모두 순회하니 O(N²)이다. 세 글자짜리 모든 문자열 조합을 계산하도록 알고리즘을 수정하면 함수는 아래와 같은 배열을 반환할 것이다. function wordBuilder(array) { let collection = [..

[알고리즘] 삽입 정렬과 빅 오(Big O)
자료구조 & 알고리즘/알고리즘2023. 9. 1. 00:07[알고리즘] 삽입 정렬과 빅 오(Big O)

이 글은 누구나 자료 구조와 알고리즘(저자 : 제이 웬그로우)의 내용을 개인적으로 정리하는 글임을 알립니다. 삽입 정렬 삽입 정렬의 수행 순서는 아래와 같다. 1. 첫 번째 패스스루에서 임시로 인덱스 1(두 번째 셀)의 값을 삭제하고 이 값을 임시 변수에 저장한다. 인덱스 1에 값이 없으므로 공백이 생긴다. 이후 각 패스스루마다 다음 인덱스의 값을 삭제한다. 2. 다음으로 공백 왼쪽에 있는 각 값을 가져와 임시 변수에 있는 값과 비교하는 시프트 단계를 시작한다. 공백 왼쪽에 있는 값이 임시 변수에 있는 값보다 크면 그 값을 오른쪽으로 시프트한다. 값을 오른쪽으로 시프트했으므로 자연히 공백이 왼쪽으로 옮겨진다. 임시로 삭제한 값보다 작은 값을 만나거나 배열의 왼쪽 끝에 도달해야 시프트 단계가 끝난다. 3...

[알고리즘] 선택 정렬과 빅 오(Big O)
자료구조 & 알고리즘/알고리즘2023. 8. 31. 00:23[알고리즘] 선택 정렬과 빅 오(Big O)

이 글은 누구나 자료 구조와 알고리즘(저자 : 제이 웬그로우)의 내용을 개인적으로 정리하는 글임을 알립니다. 선택 정렬 선택 정렬은 아래와 같은 단계를 따른다. 1. 배열의 각 셀을 왼쪽부터 오른쪽 방향으로 확인하면서 어떤 값이 최솟값인지 결정한다. 한 셀씩 이동하면서 현재까지 가장 작은 값을 기록한다.(실제로는 그 인덱스를 변수에 저장) 변수에 들어 있는 값보다 작은 값이 들어 있는 셀을 만나면 변수가 새 인덱스를 가리키도록 값을 대체한다. 2. 최솟값이 어느 인덱스에 있는지 알았으므로 그 인덱스의 값과 패스스루를 처음 시작했을 때의 값을 교환한다. 패스스루를 시작했을 때 인덱스는 첫 패스스루에서는 인덱스 0일 것이고, 두 번째 패스스루에서는 인덱스 1일 것이다. 3. 매 패스스루는 1, 2 단계로 이..

[알고리즘] 버블 정렬과 빅 오(Big O)
자료구조 & 알고리즘/알고리즘2023. 8. 30. 00:59[알고리즘] 버블 정렬과 빅 오(Big O)

이 글은 누구나 자료 구조와 알고리즘(저자 : 제이 웬그로우)의 내용을 개인적으로 정리하는 글임을 알립니다. 버블 정렬 버블 정렬은 단순 정렬(simple sort)이라 알려졌다. 이해하기 쉬워서 이렇게 불리지만, 더 빠르다고 알려진 정렬 알고리즘보다 비효율적이다. 버블 정렬은 아래와 같은 단계를 따른다. 1. 배열 내에서 연속된 두 항목을 가리킨다. 즉, 첫 번째 항목과 두번째 항목을 비교한다. 2. 두 항목의 순서가 뒤바뀌어있으면, 두 항목을 교환한다. (순서가 올바르다면 2단계에선 아무것도 하지 않는다.) 3. 포인터를 오른쪽으로 한 셀씩 옮긴다. 4. 배열의 끝까지 또는 이미 정렬된 값까지 1단계부터 3단계를 반복한다. 이제 배열의 첫 패스스루(pass-through)가 끝났다. 즉, 배열 끝까지..

image