🖥️ 들어가며 큐 (Queue) 는 선입선출 (First In First Out) 구조입니다. 가장 대표적인 예시로는 식당에서 줄 서는 상황이라 할 수 있을 것입니다. 큐는 다양한 애플리케이션에서 매우 중요한 역할을 합니다. 예를 들어, 운영체제에서는 프로세스 관리를 위해 작업들을 큐에 넣고, 네트워크 시스템에서는 데이터 패킷의 전송을 위해 큐를 사용하여 데이터의 순서를 유지합니다. 또한 프린터의 작업 대기열, 웹 서버의 요청 처리 등 실생활에서도 큐의 원리를 적용한 시스템을 쉽게 찾아볼 수 있습니다. 큐는 여러 가지 방식으로 구현될 수 있습니다. 가장 기본적인 형태는 선형 큐(Linear Queue)이며, 이외에도 순환 큐(Circular Queue), 우선순위 큐(Priority Queue), 덱(D..
우측 상단에서 다크 모드를 끌 수 있습니다! 🖥️ 들어가며 스택(Stack)은 우리 주변에서도 흔히 볼 수 있는 자료구조입니다. 문서 수정 시 되돌리기나, Ctrl-C Ctrl-V라는 좋은 예도 있고, 가장 대표적으로 사용되는 프링글스 과자 예시도 직관적으로 다가옵니다. 즉, 스택은 말 그대로 ‘쌓아놓은 어떤 더미’를 뜻합니다. 스택 스택의 가장 큰 특징은 후입선출(LIFO : Last-In First-Out)입니다. 아래 그림을 보면 이해하기 쉽습니다. 요는 가장 최근에 들어온 데이터가 가장 먼저 나간다 입니다. 스택의 구조 Push : 데이터 삽입 연산 Pop : 데이터 삭제 연산 요소(데이터) : 삽입된 데이터 스택 하단 : 가장 먼저 삽입된 데이터가 있는 곳, 최하단 스택 상단 : 스택의 입출력이..
문제 링크 : 18870번: 좌표 압축 (acmicpc.net) 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표 Xj의 개수와 같아야 한다. X1, X2, ..., XN에 www.acmicpc.net 🖥️ 시작하며 문제를 대충 해석하면 어려울 수 있는 문제다. 찬찬히 뜯어보자. 좌표 압축을 수행하려고 하는데, 조건은 아래와 같다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표 Xj의 개수와 같아야 한다. 주어진 예시로 보자. 2 4 -10 4 -9 가 입력으로 주어진다. Xi 를 좌표 압축한 결과인 X'i 의 값..
문제 링크 : 2563번: 색종이 (acmicpc.net) 2563번: 색종이 첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변 www.acmicpc.net 🖥️ 시작하며 처음의 우여곡절 본인은 처음에 수학적으로 접근했다. 예시 문제를 간단하게 분석해보니 겹치는 부분이 아래와 같은 규칙을 따랐다. 가로축에서, 입력받은 x 값이 더 작은 곳에 +10 을 한 뒤 더 큰 x 값을 뺀다. 예시에서는 3 + 10 - 5 다. 세로축에서도 똑같이 진행한다. 예시에서는 2 + 10 - 7 이다. 그렇게 생각하고 문제를 풀다보니 웬걸, 내가 짠 로직은 인접한 두 리스트만 비교해서 중..
문제 링크 : 2566번: 최댓값 (acmicpc.net) 2566번: 최댓값 첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 위치한 행 번호와 열 번호를 빈칸을 사이에 두고 차례로 출력한다. 최댓값이 두 개 이상인 경우 그 중 한 곳의 위치를 출력한다. www.acmicpc.net 🖥️ 시작하며 2차원 배열의 최댓값과 그 최댓값의 인덱스를 찾는 문제다. 아직도 C언어가 익숙한 나는 두 가지 방법으로 풀어보았다. 일반적인 방법 # 일반적인 방법, C언어 식 def findMaxIndex_C(): maxNum = float("-inf") maxRow, maxCol = 0, 0 for i in range(9): tempArr = list(map(int, input().split())) for j in ra..
문제 링크 : 10988번: 팰린드롬인지 확인하기 (acmicpc.net) 10988번: 팰린드롬인지 확인하기 첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다. www.acmicpc.net 🖥️ 시작하며 팰린드롬은 앞으로 읽었을 때와 뒤로 읽었을 때 같은 문자라 한다. 파이썬에서는 슬라이싱 기법을 통해 간단하게 반전시키는 문법이 있으니 이를 활용하자. import sys input = sys.stdin.readline if __name__ == "__main__": text = input().rstrip() print(1) if text == text[::-1] else print(0) text[::-1]을 사용하면 reverse..
로직 구글 시트에 가고 싶은 장소, 가격 상항선, 국가코드 저장 API를 이용해 Flight Search에서 가격 찾기 상한선 아래면 그에 대한 데이터와 가격을 SMS로 전송 코드 전문 # main.py from data_manager import DataManager from flight_search import FlightSearch from flight_data import FlightData from notification_manager import NotificationManager from datetime import datetime, timedelta data = DataManager() sheet_data = data.get_data() # iataCode가 비어있을 시 for i in s..
시작하며 오늘도 초미니 프로젝트를 하나 만듭니다! 운동에 관한 자연어 처리를 해주는 뉴트리셔닉스 (Nutritionix)을 이용해 자연어 처리로 오늘 무슨 운동을 했는지 대충 입력하면, 알아서 분류해 엑셀 시트에 넣어주는 프로그램입니다. 코드 전문 # main.py from exercise import Exercise from sheety import Sheety query = input('Tell me which exercises you did : ') p1 = Exercise(query=query) p1.post_exercise() put = Sheety(p1.get_exercise()) put.post_sheety() # exercise.py """뉴트리셔닉스 핵심 코드""" from dotenv ..
시작하며 API에서 header을 이용하면 고급 인증 방식을 쓸 수 있습니다. 또한, request 모듈에서 POST, PUT, DELETE를 사용할 수 있습니다. GET, POST, PUT, DELETE GET : 외부 시스템에 특정한 데이터를 요청합니다. POST : 외부 시스템에 데이터를 전송합니다. 전송의 성공 유무만 중요하고, 이에 대한 응답은 중요하지 않습니다. 데이터를 게시할 때 많이 사용합니다. PUT : 데이터를 업데이트합니다. DELETE : 외부 서비스의 데이터를 삭제합니다. 습관 추적기 프로젝트 이 사이트를 이용해서 습관 추적기를 만들어보겠습니다. 해당 서비스의 API 문서를 보면, 아래와 같이 코드를 짤 수 있습니다. from dotenv import load_dotenv impo..
시작하며 오늘은 초미니 프로젝트로 주식 거래를 도와주는 파이썬 프로그램을 만들려고 합니다. 관심 주식의 주식 시세를 가져옵니다. API를 활용합니다. 날짜별로 폐장 가격을 가져와 가격을 비교해 얼마나 상승했는지, 하락했는지 보여줄 수 있습니다. 관심 주식에 관련된 뉴스를 가져옵니다. 왜 지표가 상승했는지, 하락했는지에 대한 정보를 얻을 수 있습니다. 이에 대한 중요한 정보를 SMS로 전송합니다. 코드 전문 from dotenv import load_dotenv import os import requests from twilio.rest import Client load_dotenv() STOCK = "TSLA" COMPANY_NAME = "Tesla Inc" PERSENT_5_UP = False para..
시작하며 API는 Application Programming Interface로, 이를 이용해 소프트웨어를 생성하거나 외부 시스템과 상호작용 할 수 있습니다. 이용자들은 누구나 API의 규칙에 맞게 외부 시스템에 데이터를 요청해 응답받아 데이터를 사용할 수 있습니다. 대충 레스토랑에 우리가 주방에 직접 들어가서 음식을 만들 수는 없지만, 메뉴에 있는 음식을 주문할 수 있다고 생각하면 됩니다. API에서 가장 중요한 것은 API 엔드포인트 입니다. 쉽게 말해서 주소를 알아야 한다는 것인데, 보통 github.io같은 URL로 표현됩니다. API Request 도 중요합니다. 데이터를 요청해 빼 오는 것인데, 정식 절차를 밟아야 데이터를 건네주는데 여기서 정식 절차가 API라고 할 수 있습니다. 가장 간단한..
시작하며 직전에 포스팅한 smtplib와 datetime을 공부하고, 초초초미니 프로젝트를 한번 만들어 보았습니다. 이번에는 생일을 축하하는 이메일을 자동으로 보내는 초미니 프로젝트를 만들어보려고 합니다. 생일 축하 프로젝트? 프로젝트에서 각 파일들을 봅시다. letter_templates : 메일 양식 birthdays.csv : 연명부. name,email,year,month,day 양식으로 되어 있음 main.py : 코드 작성 이제 구현해야 할 기능들을 살펴봅시다. 1. `birthday.csv`에서 현재 생일인 사람을 가져옵니다. 2. `letter_templates`에서 랜덤한 양식을 가져와 빈칸을 채워 넣습니다. 3. 메일을 보냅니다. 코드 전문입니다. 이번에는 좀 빠르게 구현해보려고 구현에..