Banner

My Tech Blog (자료구조)

오늘의 명언
· Python
클래스는 객체지향의 기반이고, 리스트, 딕셔너리는 객체지향 언어인 파이썬에서 미리 만들어 놓은 클래스 기반의 자료구조이다. 즉, 리스트와 딕셔너리도 사실은 파이썬 클래스의 객체이다.클래스객체지향의 핵심틀(template) 혹은 설계도 (ex. 자동차 설계도)리스트자료구조 (내장 자료형)순서를 가진 값들의 모음 (ex. [1, 2, 3])딕셔너리자료구조 (내장 자료형)키-값 쌍으로 구성된 데이터 (ex. {'name': 'Dain'}) 하드코딩# 일반적인 코딩# 차량1car_company_1 = 'Ferrari'car_detail_1 = [ {'color' : 'White'}, {'horsepower': 400}, {'price': 8000}]# 차량2car_company_2 = 'Bmw..
1. 큐(queue)란 무엇인가?'큐(queue)' 란 '줄을 서다'라는 뜻을 가지고 있다. 큐는 먼저 들어간 데이터가 먼저 나오는 자료구조이며, 이런 큐의 특징을 FIFO(First In First Out) 또는 선입선출이라고 한다. 그리고 큐에서 삽입하는 연산을 Enqueue(add) 라고 하고, 꺼내느 연산을 Dequeue(Poll) 이라고 한다. 2. 큐의 ADT구분정의설명연산boolean isFull()큐에 들어 있는 데이터 개수가 maxsize 인지 확인 해서 boolean 값을 반환boolean isEmpty()큐에 들어 있는 데이터가 하나도 없는지 확인해서 boolean 값을 반환void add(ItemType item)큐에 데이터 삽입ItemType poll()큐에서 처음에 삽입한 제..
스택(Stack)개요"스택"은 데이터를 쌓아서 사용하는 자료구조로, "후입선출(LIFO, Last In First Out)" 방식으로 작동한다. 즉, 나중에 들어간 데이터가 먼저 나오는 구조이다. 스택은 주로 함수 호출, 계산기 프로그램에서 수식 계산, 또는 브라우저의 뒤로 가기 기능 등에서 사용된다.* 이와 반대의 "선입선출(FIFO, First In First Out)" 구조의 자료구조를 '큐'라고 한다.   스택을 활용한 코딩테스트 문제는 유형이 정해져 있다. 문제를 잘 읽어보고 데이터를 쌓아 올린다든지, 나중에 쌓은 데이터를 먼저 처리하는 방식이면 스택을 활용하면 된다.  스택을 사용하는 문제 유형 ✅ 괄호 유효성 검사주어진 문자열에서 괄호의 짝이 맞는지 확인하는 문제스택을 사용해 여는 괄호는 스..
정렬(Sort)개요데이터를 오름차순 또는 내림차순으로 배열하거나 리스트의 요소를 정렬하는 과정이다.  정렬을 활용한 코딩테스트 문제는 매우 다양하다. 정렬 문제는 문제를 풀 때는 정렬 기준을 정확히 파악하고, 그에 맞는 알고리즘을 선택하는 것이 중요하다. 정렬 알고리즘, 이진 탐색, 투 포인터, 빈도수 계산 등 다양한 기술을 조합해 해결해야 하는 문제들이 많다.  주어진 조건을 Arrays.sort() 를 이용해서 정렬해야 하는 문제도 있고, 정렬 기준을 사용자 정의 객체에 맞게 지정해야 하는 경우, Comparator 인터페이스를 구현한 객체를 Collections.sort() 또는 Arrays.sort()에 전달하여 정렬하면 되고, 이 때 Java 8 이상에서는 Comparator를 람다 표현식으로 ..
📑 1. 문제설명명함 지갑을 만드는 회사에서 지갑의 크기를 정하려고 합니다. 다양한 모양과 크기의 명함들을 모두 수납할 수 있으면서, 작아서 들고 다니기 편한 지갑을 만들어야 합니다. 이러한 요건을 만족하는 지갑을 만들기 위해 디자인팀은 모든 명함의 가로 길이와 세로 길이를 조사했습니다.아래 표는 4가지 명함의 가로 길이와 세로 길이를 나타냅니다. 가장 긴 가로 길이와 세로 길이가 각각 80, 70이기 때문에 80(가로) x 70(세로) 크기의 지갑을 만들면 모든 명함들을 수납할 수 있습니다. 하지만 2번 명함을 가로로 눕혀 수납한다면 80(가로) x 50(세로) 크기의 지갑으로 모든 명함들을 수납할 수 있습니다. 이때의 지갑 크기는 4000(=80 x 50)입니다. 모든 명함의 가로 길이와 세로 길이..
1. 문제설명 예제 #1문제에 나온 예와 같습니다. 예제 #26개의 프로세스 [A, B, C, D, E, F]가 대기 큐에 있고 중요도가 [1, 1, 9, 1, 1, 1] 이므로 [C, D, E, F, A, B] 순으로 실행됩니다. 따라서 A는 5번째로 실행됩니다.2. 접근방식2-1. 배열 쪼개기 (추천하지 않음❌)보자마자 최대값을 찾아서 최대값의 인덱스를 기준으로 배열을 쪼개서 다시 붙이면 될 거 같다고 생각했다. priorities 배열를 순회하면서 우선순위 max값을 찾고, 그 값의 인덱스를 기준으로 배열을 두 개로 쪼갠 다음, 앞 뒤로 이어서 붙이는 것이다. 되게 쉽게 풀 줄 알았는데 생각보다 어려웠고 솔직히 계속 실패했다. 배열 쪼개는 메서드를 구글에서 찾아가면서 코드를 쓰는데 써 내려 갈수록 ..
아.... 공부하다가 나만 보려고 이렇게 자세하게 적을 생각 없었는데혹시나 제 블로그 들어오실 수도 있는 분들을 위해서 그냥 다 요약해서 적어 봅니다 파이썬의 자료 구조 리스트 [ ]Square BracketS튜플 ( )Round Brackets셋 { }Braces딕셔러니 { 'key:value' }  1. 리스트(List)  - 배열처럼 여러 요소를 갖는 집합,  - 새로운 요소 삽입, 갱신, 삭제 가능 - 파이썬 리스트는 동적 배열, 즉 자유롭게 확장 가능 - [] 대괄호 사용 - 각 요소들은 서로 다른 타입도 가능 ✅ 리스트 메서드 - # list.index(요소) 리스트에서 특정 요소 위치 검색 - 첫번째 시작하는 위치 반환- # list.count(요소) 리스트 안에 위치가 포함된 개수list ..
상단으로