본문 바로가기

개인공부/패스트캠퍼스 알고리즘18

[알고리즘] 2-2. 배열과 리스트 # 배열(Array) - 가장 기본적인 자료구조다. - 여러 개의 변수를 담는 공간으로 이해할 수 있다. - 배열은 인덱스(index)가 존재하며, 인덱스는 0부터 시작한다. - 특정한 인덱스에 직접적으로 접근 가능 -> 수행 시간: O(1) # 배열의 특징 - 컴퓨터의 메인 메모리에서 배열의 공간은 연속적으로 할당된다. 장점: 캐시(cache) 히트 가능성이 높으며, 조회가 빠르다. 단점: 배열의 크기를 미리 지정해야 하는 것이 일반적이므로, 데이터의 추가 및 삭제에 한계가 있다. # 연결리스트(Linked List) - 연결 리스트는 컴퓨터의 메인 메모리상에서 주소가 연속적이지 않다. - 배열과 다르게 크기가 정해져 있지 않고, 리스트의 크기는 동적으로 변경 가능하다. 장점: 포인터(pointer)를.. 2023. 8. 15.
[알고리즘] 2-1. 자료구조 # 자료구조(data structure)란? - 다수의 자료(data)를 담기 위한 구조 - 데이터의 수가 많아질수록 효율적인 자료구조가 필요하다. - 자료구조와 알고리즘은 상당히 밀접한 관계가 있다. - 성능비교: 자료구조/알고리즘의 성능 측정 방법에 대해 이해할 필요가 있다. - 자료구조의 필요성: 자료구조를 제대로 이해하지 못하면 불필요하게 메모리와 계산을 낭비할 여지가 있다. 즉, 데이터를 효과적으로 저장하고, 처리하는 방법에 대해 바르게 이해할 필요가 있다. # 자료구조의 종류 1. 선형구조(linear data structure) - 배열(array) - 연결 리스트(linked list) - 스택(stack) - 큐(queue) 2. 비선형 구조(non-linear data structure.. 2023. 8. 15.
1-7. JavaScript 문자열 문제풀이 www.acmicpc.net/problem/11720 11720번: 숫자의 합 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. www.acmicpc.net #내가푼코드 let fs = require('fs'); let input = fs.readFileSync('/dev/stdin').toString().split('\n'); let j = input[1]; let answer = 0; for(let x of j){ answer = answer + Number(x); } console.log(answer); #포인트 -문자열에서 각 문자(원소)를 하나씩 확인하여 정수로 변환한다. -정수로 변환된 각 값을 모두 더하여 정답을 계산할 수 있다. # .. 2023. 8. 1.
1-6. JavaScript 배열 문제풀이 www.acmicpc.net/problem/10818 10818번: 최소, 최대 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. www.acmicpc.net #포인트 -배열의 원소를 하나씩 확인하여, 최대값과 최소값을 찾는 문제다. -최대값(max value)과 최소값(min value) 정보를 업데이트한다. -원소를 차례대로 하나씩 확인한다는 점에서 시간 복잡도 O(N)로 해결할 수 있다. # 정답예시1 let fs = require('fs'); let input = fs.readFileSync('/dev/stdin').toSt.. 2023. 7. 30.