본문 바로가기

자료구조 알고리즘16

프로그래머스 SQL 고득점 Kit (~ing) 프로그래머스 문제풀이 1. SELECT 문 -- 아픈동물 찾기 SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION = 'Sick' OERDER BY ANIMAL_ID; -- 어린 동물 찾기 SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION != "Aged" ORDER BY ANIMAL_ID; -- 동물의 아이디와 이름 SELECT ANIMAL_ID, NAME FROM ANIMAL_INS ORDER BY ANIMAL_ID; -- 여러 기준으로 정렬하기 -- 코드를 입력하세요 SELECT ANIMAL_ID,NAME,DATETIME FROM ANIMAL_INS ORDER BY .. 2023. 4. 3.
백준 자바 제출 방법 1. 클래스 이름: Main -> 클래스 이름을 Main으로 지정해야 제출시 컴파일 오류가 발생하지 않는다. public class Main{ public static void main(String[] args){ System.out.println("Hello World"); //코드작성 } } 2. 빠른 입출력 BufferedReader, BufferedWriter 사용하기 일반적인 입출력인 Scanner과, System.out.print보다 속도가 빠른 BufferedReader, BufferedWriter 사용하기 - 입력 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 엔터를 기준으로 입력을 받는다 Strin.. 2022. 12. 5.
기본 알고리즘 유형 기본 알고리즘 개념 1. 그리디(탐욕법) 그리디란? 현재 상황에서 가장 좋아 보이는 것만을 선택하는 알고리즘. 예시 -> 그리디 알고리즘의 대표적인 예시는 거르슴돈 문제이다. 즉 '현재 상황에서 특정한 기준에 따라 가장 좋아 보이는 것만을 선택'해서 최적의 해를 구해야 하는것. (다익스트라 최단 경로 알고리즘), (크루스칼 알고리즘) 2.구현 구현? '머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정' (완전 탐색 -> 모든 경우의 수를 주저 없이 다 계산하는 해결 방법) (시뮬레이션 -> 문제에서 제시한 알고리즘을 한 단계씩 차례대로 직접 수행) 3. 탐색 탐색? 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정을 의미한다. 대표적으로 코딩 테스트에는 그래프와 트리 자료구조.. 2022. 10. 22.
자료구조 - 해쉬 테이블(Hash Table) 언어는 python을 사용하였습니다. 6. 해쉬 테이블(Hash Table) 키(Key)에 데이터(Value)를 저장하는 데이터 구조 해쉬구조 Key를 통해 바로 데이터를 받아올 수 있으므로, 속도가 매우 빠름 파이썬의 딕셔너리(Dictionary) 타입이 해쉬 테이블의 예시 이다. 보통 배열로 미리 Haash Table의 사이즈만큼 생성 한 뒤에 사용한다. 해쉬 테이블의 크기를 크게 만듦으로써 충돌로 인한 추가적인 알고리즘을 실행시키지 않도록 한다 즉 공간과 탐색 시간을 맞바꾸는 기법 이다. 배열보다 빠르게 데이터를 찾을수 있다. 알아둘 용어 해쉬(Hash): 임의 값을 고정된 길이로 변환하는 것 해쉬 테이블(Hash Table): 키 값의 연산에 의해 직접 접근이 가능한 데이터 구조 해싱 함수(Has.. 2022. 10. 4.
알고리즘의 복잡도 표현 언어는 python을 사용하였습니다. 5. 알고리즘의 복잡도 표현 알고리즘을 해결하는 방법에는 여러가지 방법이 있고, 여러가지 방법중 더 좋은 알고리즘을 분석하기 위해 계산한다. ex) 1부터 10까지의 합을 구하는 방법. (1)1부터 10까지 모두 더한다. (2)공식을 사용한다. 알고리즘 복잡도 계산 항목 시간 복잡도 : 알고리즘 실행 속도 공간 복잡도 : 알고리즘이 사용하는 메모리 사이즈 가장 중요한 것은 시간 복잡도 로서, 시간 복잡도는 반복문이 가장 큰 영향을 미친다. 알고리즘 성능 표기법 Big O(빅-오) 표기법: O(N) -> 알고리즘의 최악의 실행 시간을 나타낸다. -> 가장 많이 사용한다. -> 아무리 최악의 상황이더라도, 최소한 이정도의 성능은 보장한다 라는 의미 Ω (오메가) 표기법:.. 2022. 10. 3.
자료구조 - 링크드 리스트(Linked List) 언어는 python을 사용하였습니다. 4. 링크드 리스트(Linked List) 링크드 리스트는 연결 리스트라고도 하며, 배열을 순차적으로 연결된 공간에 데이터를 나열하는 데이터 구조 이다. C언어에서 주요한 데이터 구조 이지만, 파이썬에서는 리스트 타입이 링크드 리스트의 기능을 지원 한다. 링크드 리스트의 형태 노드(Node): 데이터 저장 단위로서, 데이터값과 포인터로 구성된다. 포인터(pointer): 각 노드 안에서, 다음이나 이전의 노드와의 연결 정보 즉 주소를 가지고 있는 공간 이다. #링크드 리스트 만들기 class Node: def __init__(self, data, next=None): self.data = data self.next = next # 데이터 추가하기 def add(dat.. 2022. 10. 3.