본문 바로가기

알고리즘

(87)
자료구조 2주차_어레이와 링크드리스트 자료구조 2주차_어레이와 링크드리스트 ARRAY □□□□□□□ 캡슐 호텔과 유사. 크기가 정해진 데이터 공간 📌 장점 메모리 접근이 쉬워 값을 빠르게 가져올 수 있음(지역적인 특성, Locality) 특정 원소 조회가 쉬움(index로 접근, O(1)의 시간 복잡도를 가짐) 두번째 원소의 메모리 주소 = 최초 원소의 메모리 주소 +( 원소의 데이터 타입에 따른 바이트 크기 ) 예 ) 100, 104, 108, ...(메모리 mapping) 📌 단점 새로운 칸을 지으려면 너무 많은 자원이 필요. 배열은 원소를 중간에 삽입/삭제 하려면 모든 원소를 다 옮겨야 함. 최악의 경우 배열의 길이만큼 옮겨야 하므로 O(N) 시간 복잡도를 가짐. 특정 원소를 삭제하거나 null로 만들어도 그 흔적이 그대로 남아 있음(..
자료구조 1주차_시간복잡도 & 공간복잡도 자료구조 1주차_시간복잡도 & 공간복잡도 editor : Pycharm 파이썬 : Python 3.8 📌 시간복잡도란? 연산하는데 걸리는 시간 array의 길이만큼 도는 이중 for문 : array의 길이 × array의 길이 × 비교연산(if) 1번 = N^2 for문 2번과 if문 1번 = array길이 + array길이 + 비교연산(if) 1번 = 2N + 1 N의 값이 커질 수록 N^2과 2N+1의 격차는 커짐!! 📌 공간복잡도란? 입력값이 늘어나도 걸리는 공간이 덜 늘어나는 알고리즘이 좋은 알고리즘! 하지만 공간복잡도가 차이 난다고해서 성능이 크게 차이 나지 않음 결론, 공간복잡도보다는 시간복잡도에 더 비중을 두고 알고리즘을 짜야 한다! 점근표기법 알고리즘의 성능을 수학적으로 표기하는 방법 📌 ..
자료구조 1주차_알고리즘과 친해지기 자료구조 1주차_알고리즘과 친해지기 editor : Pycharm 파이썬 : Python 3.8 최대값 구하기 📄 내 풀이(강의 풀이2와 동일) input = [3, 5, 6, 1, 2, 4] def find_max_num(array): max = array[0] for num in input: if max < num: max = num return max result = find_max_num(input) print(result) 📄 강의 풀이1 def find_max_num(array): for num in array: for compare_num in array: if num < compare_num: break else: return num num 3일때, 3 통과 5(3 < 5) 불통 break..
파이썬 문법 뽀개기 심화 파이썬 문법 뽀개기 심화 editor : Pycharm 파이썬 : Python 3.8 튜플, 집합 📌 튜플(tuple) 리스트랑 똑같이 순서가 중요한 자료형이면서 불변형인 자료형 # 리스트는 값 바꾸는 가능 a = ['사과', '감', '배'] a[1] = '수박' # 튜플은 오류 발생. 값 변경 불가능 b = ('사과', '감', '배') b[1] = '수박' 아래와 같은 형태로 불변형 자료를 많이 사용 a_dict = [('bob','24'),('john','29'),('smith','30')] 📌 집합(set) 중복을 제거해주는 자료형 a = [1,2,3,5,6,8,9,1,8] a_set = set(a) print(a_set) # 중복 제거 {1, 2, 3, 5, 6, 8, 9} set을 활용해서 ..
파이썬 문법 뽀개기 기초 파이썬 문법 뽀개기 기초 파이썬을 설치했다 = 일종의 번역팩을 설치했다. editor : Pycharm 파이썬 : Python 3.8 Pycharm 폰트 Size 조절 [Setting]-[Editor]-[General]-[Change font size with Ctrl+Mouse Wheel in] 체크 파일 [New Project] Location : 마지막 \venv 파일 확인 Base interpreter : Python38 확인 변수 값을 담는 박스 메모리에 저장된 값을 가리키고 있다. 📌 문자열 a = 'dbyeon' 변수랑 헷갈리지 않도록 작은따음표(')로 감싸줌 📌 기본 사칙연산 a = 3 b = 2 a+b a-b a*b a/b # 나머지 a%b # 제곱 a**b # 몫 a//b 📌 Boole..
백준 10828번 스택 백준 10828번 스택 class 2 실버 4 정답률 37.248% 📖 문제 정수를 정수하느 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 다섯가지이다. push X : 정수 X를 스택에 넣는 연산 pop : 스택에서 가장 위에 있는 정수를 빼고 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우 -1을 출력한다. size : 스택에 들어있는 정수의 갯수를 출력한다. empty : 스택이 비어 있으면 1, 아니면 0을 출력한다. top : 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. 📖 입력 첫째 줄에는 1이상 10,000이하인 정수N이 주어지고 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 문제..
백준 2231번 분해합 백준 2231번 분해합 레벨 : 골드 2 class : 2 📖 문제 생성자 245 분해합 245 + 2 + 4 + 5 = 256 자연수 N은 1에서 1,000,000 사이의 수만 입력된다. N의 생성자를 출력하시오. 만약, 생성자가 없는 경우, 0을 출력한다. 📖 예제 입력 1 216 📖 예제 출력 1 198 📝제출 코드1 언어 Java11 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedR..