목표 도커(Docker)의 개념에 대해서 이해하는 시간을 갖도록 하겠습니다. 개요 이번 학기에 캡스톤 디자인을 수강하는데, 개발 과정에서 도커를 활용해야하는 상황입니다. 도커와 더불어 쿠버네티스(Kubernetes)가 요즘 핫한 분위기입니다. 왜 인기가 많은지 학습과 실습을 통해 몸으로 느껴보겠습니다. 도커(Docker)란? 도커란 무엇일까요? Docker의 말 그대로 보면 Dock + er 인데요. Dock이란 말은 부두, 선창, 부두에 대다란 뜻입니다. 아무튼 배와 관련이 되어 있어보이네요. 한 번 인천항을 상상해봅시다. 바다에 떠있는 큰 배들은 등에 본인이 필요한 큰 컨테이너를 싣고 어딘가로 떠나고 있습니다. 바로 이 부분에서 "도커"의 개념이 나온 것입니다. 우리는 기존에 웹을 개발할 때, 본인이..
목표 단방향 연결리스트의 개념에 대해서 이해해보고 파이썬으로 구현해보도록 하겠습니다. 목차 클릭하면 해당 목차로 이동합니다. 단방향 연결 리스트란?(Singly Linked List) 파이썬으로 구현하기 정리 개요 앞서 순차적 자료구조인 리스트와 배열에 대해서 이해하고 스택과 큐에 대해서 공부하고 예제를 풀어보았습니다. 이번 포스팅에서는 단방향 연결리스트에 대해서 알아보도록 하겠습니다. 연결리스트는 배열과 유사하지만, 연속된 공간에 메모리를 차지하고 인덱스를 통해 상수시간 내에 값을 처리한다는 특징이 있습니다. 반면, 연결리스트는 메모리 상에 흩어져 있지만 연결되어 있다는 특징이 있습니다. 이에 대한 부분을 자세히 알아보도록 하겠습니다. 단방향 연결 리스트란?(Singly Linked List) 연결리스..
목표 저번 포스팅에서 배운 큐의 개념을 토대로 요세푸스 문제를 해결해보도록 하겠습니다. 1158번 : 요세푸스 문제 https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 요세푸스 문제란, N명의 사람들이 원형 탁자에 앉아있다고 했을 때, K번째 사람이 자리에서 일어나서 나간다고 생각하면 됩니다. 예를 들어, 5명이 앉아 있을 때 K=2라면 2번 사람이 일어나서 나가고 4번 사람이 일어나서 나가면 1, 3, 5번 사람이 앉아있겠죠? 그럼 여기서 3번이 나가는 것입니다. 앞에서부터 2의 배수번째 사람들이 나가는 거에요. 해당 문제를 큐로 구현해..
목표 순차적 자료구조인 큐의 개념에 대해서 알아보겠습니다. 개요 저번 포스팅에서는 순차적 자료구조인 스택에 대해서 알아보았습니다. 큐(Queue)는 스택과 비슷한 부분들이 많기 때문에 비교하면서 큐에 대해서 이해하는 시간을 갖도록 하겠습니다. 큐(Queue)란? 큐(Queue)는 스택과 비슷한 형태를 가집니다. 다만, 스택은 LIFO(Last In First Out) 구조로 마지막에 들어온 데이터가 제일 먼저 나가는 형태입니다. 큐는 FIFO(First In First Out) 구조로 맨 처음 들어온 데이터가 먼저 나가는 형태입니다. 예를 들어, 마트에서 줄 서는 것을 생각할 수 있겠네요. 스택에서는 Push, Pop, Len, Top 4가지 연산을 지원했습니다. 큐는 Enqueue, Dequeue, i..
개요 자료구조에서 배운 스택을 활용해서 백준 알고리즘 문제를 풀어보겠습니다. 참고 - [자료구조] 스택(Stack)이란? 스택을 활용해 괄호쌍 확인하기 제가 저번에 포스팅 했던 글입니다. 스택의 개념을 이해하면서 비슷한 예제를 풀었었는데요. 그 예시보다 조금 높은 난이도의 문제입니다. 문제 https://www.acmicpc.net/problem/2504 2504번: 괄호의 값 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 www.acmicpc.net 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과..
멘토링 후기 및 깨달은 점과 문제 해결 과정 개요 학교에서 지원하는 코멘토 멘토링 프로그램에 참여할 수 있는 좋은 기회를 얻어 참여하게 되었습니다. 이런 멘토링 프로그램에 참여하는 것이 처음이라 다소 낯설었지만, 소중한 시간 쪼개서 멘토링을 진행해주시는 것이기 때문에 최선을 다했습니다. 멘토링은 세션과 과제로 이루어져 있고 세션에서 인공지능 챗봇에 대한 기본적인 내용과 과제에 도움이 될만한 얘기들을 해주셨습니다. 세션을 통해서 과제를 진행하고, 피드백을 통해 보완하는 방식으로 진행되었습니다. 특히, 세션의 후반부에는 멘토님이 실무를 진행하면서 느꼈던 점이나 진로를 결정하고 취업을 준비하는 데 있어서 많은 조언을 해주셨습니다. "이게 맞다"가 아닌 멘토님의 생각을 말씀해주셔서 제 생각을 굳힐 수 있게 유도..
목표 스택을 활용해서 중위 표기법으로 입력한 연산을 후위 표기법으로 변환해서 결과를 출력하는 프로그램을 작성해보겠습니다. 목차 클릭하면 해당 목차로 이동합니다. 수식 표기법 스택 예제 : 중위 표기법을 후위 표기법으로 변환하여 계산하는 계산기 정리 개요 저번 포스팅에서 스택에 대해서 복습했습니다. 스택은 LIFO(Last In First Out) 구조를 갖는 자료구조입니다. 마치 접시와 같이 마지막에 들어간 데이터가 맨 처음 나오는 구조로, 파이썬의 클래스를 활용해서 구현했습니다. 클래스 안에 멤버 리스트를 생성해서 append, pop 함수로 스택을 만들었습니다. 이번 포스팅에서는 스택을 활용해서 중위 표기(infix)로 입력된 수식을 후위 표기(postfix)로 바꾸고 계산하는 프로그램을 작성해보도록..
목표 저번 포스팅에서 간단히 알아봤던 스택(Stack)에 대해서 복습하고 실습을 통해 자세히 이해하도록 하겠습니다. 목차 클릭하면 해당 목차로 이동합니다. 스택(Stack) 이란? 연습 문제: 괄호 맞추기 정리 개요 저번 포스팅에서 순차적 자료구조(Sequential Data Structure)에 대해서 알아보았습니다. 참고 - [자료구조] 순차적 자료구조, 배열과 리스트의 이해 그 중에서도 배열과 리스트에 대해서 자세히 알아보았는데요. 이 과정에서 스택, 큐, 디큐에 대해서 잠깐 언급했었습니다. 이번 포스팅에서는 스택에 대해서 자세히 알아보도록 하겠습니다. 스택(Stack)이란? 어떤 자료구조든 삽입·삭제·탐색 기능을 제공합니다. 스택에서는 Push(삽입), Pop(삭제)를 비롯한 Top(맨 위에 있는..