스택은 무엇이고큐는 무엇인가? 스택 (Stack) --스택은후입선출 (LIFO, Last In First Out) 자료 구조로마지막으로 들어간 데이터가 맨 처음으로 나가는 구조다. 이때 데이터를 담는 연산(데이터 추가)을 'push', 담긴 데이터를 꺼내는 연산(데이터 삭제 후 반환)을 'pop'이라고 부른다. 스택의 주요 연산푸시(push) : 스택의 맨 위에 새로운 데이터 삽입팝(pop) : 스택의 맨 위에 있는 데이터 삭제 후 반환피크(peek) 또는 탑(top) : 스택의 맨 위에 있는 데이터를 삭제하지 않고 반환isEmpty : 스택이 비어 있는지 확인 배열이나 연결 리스트 중 어느 쪽이든 스택을 구현할 수 있다. 배열로 스택 표현하기 리스트로 스택 표현하기 리스트에..
분류 전체보기
동적 자료 구조란 무엇인가? 배열의 한계 --배열은 메모리 접근 속도가 빠르고, 구조가 단순하여기본적인 데이터 저장 용도로 유용하지만다방면으로 사용하기에는 한계가 존재한다. 여러 한계들이 존재하지만 그중에 중요한 것은배열을 처음 생성할 때 정해진 해당 배열의 크기와 메모리 레이아웃은 고정이 되어 변경이 불가능하다. 메모리 레이아웃이란메모리의 구조와 분포를 나타내는 것으로간단하게 메모리의 공간(영역)으로 생각하면 된다. 즉, 이미 생성한 배열의 크기보다 큰 데이터를 담으려면(저장) 해당 크기에 알맞은 배열을 새로 생성해서 할당해야 한다.배열의 크기가 '5'지만 총 6개의 데이터를 담아야 하는 경우 이러한 단점을 보안하기 위해 현대적인 프로그래밍 언어에서는원소를 추가하면 크기가 커지고 원소를 제거..
이진 탐색이란? 선형 스캔 --선형 스캔은이진 탐색보다 더 간단한 알고리즘으로리스트에서 한 번에 하나씩 값을 목푯값과 비교하면서 목푯값을 찾거나 목록의 끝에 도달할 때까지 비교하여 목푯값을 찾는 것이다. 즉, 리스트 내부의 처음부터 끝까지 직접 목푯값과 비교하여 찾는 방식이다. 리스트(배열)에서 '3'을 찾는 선형 스캔 알고리즘 예시 코드 [JAVA]public class LinearScan { public static int linearScan(int[] A, int target) { int i = 0; while (i 이렇게 선형 스캔 알고리즘은리스트의 모든 항목을 직접 비교를 해야하기 때문에 "무식하게 검사하는 방법"으로위 예시처럼 리스트의 크기가 작으..
데이터를 메모리에 저장하는 방법? 서론 --일반적으로 컴퓨터 프로그램이라면 무엇이든 데이터를 메모리에 저장 및 접근이 가능해야 한다.이러한 각 데이터들은 프로그램이 의도하는 기능을 수행하는 데 꼭 필요하다. 데이터를 메모리에 저장하는 기본적인 방법을 알아보자.변수복합 자료 구조배열-- 변수 --변수는컴퓨터 메모리 내부에 데이터의 위치 또는 주소를 표현하는 이름이다. 변수를 사용하게 되면데이터를 사용할 때 사용한 변수 이름을 이용하여 저장된 데이터를 읽을 수 있으며변수 이름만 알고 있다면 데이터의 메모리 위치를 알 필요가 없어진다. 변수가 없다면 프로그램의 내부 상태를 추적, 평가, 변경할 수 없다. 위 그림처럼 변수를 저장하게 되면해당 데이터가 메모리 내부에 저장하게 되는데이때 메모리 ..
자료구조란 무엇인가?그리고 알고리즘과 무슨 차이점이 있을까? 자료구조 --자료구조는데이터를 효율적으로 저장하고 조작하는 방법을 정의하는 구조를 의미한다.(대량의 데이터를 효율적으로 관리할 수 있는 데이터의 구조) 그래서어떠한 자료구조를 사용하는가에 따라 알고리즘의 성능에 직접적인 영향을 미치게 되며특정 문제를 해결하는 데 최적화된 방법을 제공할 수 있게 된다. 즉, 자료구조는 각기 다른 특성과 성능을 제공하므로, 문제의 특성과 요구사항에 맞는 자료구조를 선택하는 것이 중요하다.잘못된 자료구조를 사용하게 되면 알고리즘의 성능이 크게 저하되게 된다.-- 자료구조와 알고리즘 --자료구조는데이터를 효율적으로 저장하고 관리하는 방법을 의미하며데이터를 특정한 방식으로 조직화하여 쉽게 접근하고 수정할 ..
·AWS
EC2가 무엇인가? EC2 (Elastic Compute Cloud) --EC2는AWS에서 컴퓨터를 빌려 해당 컴퓨터를 원격으로 제어할 수 있는 서비스다. EC2를 사용하는 이유서버를 배포하기 위해서는 컴퓨터가 필요하고 24시간 동안 컴퓨터를 켜놔야 한다.이때 배포한 컴퓨터가 내가 평소에 사용하던 컴퓨터라면인터넷을 통해서 다른 사용자들이 내 컴퓨터에 접근할 수 있게 만들다 보니보안적으로도 위험할 수 있다. 이러한 불편함 때문에 개인 컴퓨터를 상용하지 않고 외부 컴퓨터인 EC2를 빌려서 배포에 사용하는 것이다. 이 외에도 EC2에는 여러 부가 기능들을 가지고 있다.로깅 : 로그를 남기는 기능오토스케일링 : 서버의 크기를 자동으로 줄이거나 늘리는 기능로드밸런싱 : 여러 대의 서버에게 트..
GitHub Actions는 무엇이고CI/CD 파이프라인을 어떻게 구현할까? GitHub Actions -- GitHub에서는 파이프라인을 구성하고 자동화할 수 있는 GitHub Actions라는 도구를 제공해 준다. GitHub Actions를 사용하면GitHub의 소스 코드를 Push했을 때 자동으로 CI / CD 파이프라인을 실행시켜 준다. CI 파이프라인을 (빌드단계) 수행하기 위해서는 빌드를 하기 위해 컴퓨터가 필요하다.(도커 이미지 빌드를 하려면 도커가 설치된 컴퓨터가 필요) 하지만 GitHub Actions를 사용하면GitHub가 빌드용 서버를 임시로 빌려주기 때문에GitHub가 제공하는 서버에서 파이프라인을 실행할 수 있다. GitHub Actions 무료 버전은하단에 500MB의..
CI / CD 파이프라인은 무엇인가? CI / CD 파이프라인 -- 파이프에 물이 흐르는 것처럼IT 운영 환경에는 물 대신 소스코드가 물처럼 흐르는 것을 의미하고물처럼 흐르면서 자동으로 빌드 및 배포 등이 동작하는 것을 말한다. 즉, 개발자가 소스 코드를 업로드했을 때 최종적으로 배포까지 자동화가 이루어지는 것을CI / CD 파이프라인이라고 부른다. CI / CD 파이프라인은CI 파이프라인과 CD 파이프라인으로 나눌 수 있다. CI 파이프라인은지속적인 통합을 의미하여배포 환경에 배포할 수 있는 아티팩트를 만드는 것을 자동화하는 것으로소스코드를 빌드하는 것이 목표이다. CD 파이프라인은지속적인 배포를 의미하여CD 파이프라인에서 생성된 아티팩트를 실제 환경에 배포하는 것을 자동화한다.--