[자료구조] 큐 (Queue) - 배열로 구현 (C, Python)
◎ 자료구조와 알고리즘/자료구조 이론2024. 4. 14. 13:51[자료구조] 큐 (Queue) - 배열로 구현 (C, Python)

🖥️ 들어가며 큐 (Queue) 는 선입선출 (First In First Out) 구조입니다. 가장 대표적인 예시로는 식당에서 줄 서는 상황이라 할 수 있을 것입니다. 큐는 다양한 애플리케이션에서 매우 중요한 역할을 합니다. 예를 들어, 운영체제에서는 프로세스 관리를 위해 작업들을 큐에 넣고, 네트워크 시스템에서는 데이터 패킷의 전송을 위해 큐를 사용하여 데이터의 순서를 유지합니다. 또한 프린터의 작업 대기열, 웹 서버의 요청 처리 등 실생활에서도 큐의 원리를 적용한 시스템을 쉽게 찾아볼 수 있습니다. 큐는 여러 가지 방식으로 구현될 수 있습니다. 가장 기본적인 형태는 선형 큐(Linear Queue)이며, 이외에도 순환 큐(Circular Queue), 우선순위 큐(Priority Queue), 덱(D..

[자료구조] 스택 - Stack (C, Python)
◎ 자료구조와 알고리즘/자료구조 이론2024. 4. 13. 21:51[자료구조] 스택 - Stack (C, Python)

우측 상단에서 다크 모드를 끌 수 있습니다! 🖥️ 들어가며 스택(Stack)은 우리 주변에서도 흔히 볼 수 있는 자료구조입니다. 문서 수정 시 되돌리기나, Ctrl-C Ctrl-V라는 좋은 예도 있고, 가장 대표적으로 사용되는 프링글스 과자 예시도 직관적으로 다가옵니다. 즉, 스택은 말 그대로 ‘쌓아놓은 어떤 더미’를 뜻합니다. 스택 스택의 가장 큰 특징은 후입선출(LIFO : Last-In First-Out)입니다. 아래 그림을 보면 이해하기 쉽습니다. 요는 가장 최근에 들어온 데이터가 가장 먼저 나간다 입니다. 스택의 구조 Push : 데이터 삽입 연산 Pop : 데이터 삭제 연산 요소(데이터) : 삽입된 데이터 스택 하단 : 가장 먼저 삽입된 데이터가 있는 곳, 최하단 스택 상단 : 스택의 입출력이..

[백준 / BOJ] 18870번 좌표 압축 (Python C++)
◎ 자료구조와 알고리즘/백준(BOJ) 문제풀이2024. 3. 17. 22:29[백준 / BOJ] 18870번 좌표 압축 (Python C++)

문제 링크 : 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 의 값..

[백준 / BOJ] 2563번 색종이 (Python)
◎ 자료구조와 알고리즘/백준(BOJ) 문제풀이2024. 3. 16. 13:00[백준 / BOJ] 2563번 색종이 (Python)

문제 링크 : 2563번: 색종이 (acmicpc.net) 2563번: 색종이 첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변 www.acmicpc.net 🖥️ 시작하며 처음의 우여곡절 본인은 처음에 수학적으로 접근했다. 예시 문제를 간단하게 분석해보니 겹치는 부분이 아래와 같은 규칙을 따랐다. 가로축에서, 입력받은 x 값이 더 작은 곳에 +10 을 한 뒤 더 큰 x 값을 뺀다. 예시에서는 3 + 10 - 5 다. 세로축에서도 똑같이 진행한다. 예시에서는 2 + 10 - 7 이다. 그렇게 생각하고 문제를 풀다보니 웬걸, 내가 짠 로직은 인접한 두 리스트만 비교해서 중..

[백준 / BOJ] 2566번 최댓값 (Python)
◎ 자료구조와 알고리즘/백준(BOJ) 문제풀이2024. 3. 15. 17:17[백준 / BOJ] 2566번 최댓값 (Python)

문제 링크 : 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..

[백준 / BOJ] 10998번 팰린드롬인지 확인하기 (Python)
◎ 자료구조와 알고리즘/백준(BOJ) 문제풀이2024. 3. 13. 18:59[백준 / BOJ] 10998번 팰린드롬인지 확인하기 (Python)

문제 링크 : 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..

Day 039 - 항공권 가격 추적 프로젝트
◎ Python/Udemy Python2024. 3. 8. 20:24Day 039 - 항공권 가격 추적 프로젝트

로직 구글 시트에 가고 싶은 장소, 가격 상항선, 국가코드 저장 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..

Day 038 - 구글 시트에 운동 기록
◎ Python/Udemy Python2024. 3. 8. 20:23Day 038 - 구글 시트에 운동 기록

시작하며 오늘도 초미니 프로젝트를 하나 만듭니다! 운동에 관한 자연어 처리를 해주는 뉴트리셔닉스 (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 ..

Day 037 - 습관 추적기 프로젝트
◎ Python/Udemy Python2024. 3. 8. 20:17Day 037 - 습관 추적기 프로젝트

시작하며 API에서 header을 이용하면 고급 인증 방식을 쓸 수 있습니다. 또한, request 모듈에서 POST, PUT, DELETE를 사용할 수 있습니다. GET, POST, PUT, DELETE GET : 외부 시스템에 특정한 데이터를 요청합니다. POST : 외부 시스템에 데이터를 전송합니다. 전송의 성공 유무만 중요하고, 이에 대한 응답은 중요하지 않습니다. 데이터를 게시할 때 많이 사용합니다. PUT : 데이터를 업데이트합니다. DELETE : 외부 서비스의 데이터를 삭제합니다. 습관 추적기 프로젝트 이 사이트를 이용해서 습관 추적기를 만들어보겠습니다. 해당 서비스의 API 문서를 보면, 아래와 같이 코드를 짤 수 있습니다. from dotenv import load_dotenv impo..

Day 036 - 주식시장 알림 프로젝트
◎ Python/Udemy Python2024. 3. 8. 20:11Day 036 - 주식시장 알림 프로젝트

시작하며 오늘은 초미니 프로젝트로 주식 거래를 도와주는 파이썬 프로그램을 만들려고 합니다. 관심 주식의 주식 시세를 가져옵니다. 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..

Day 033 - API 활용
◎ Python/Udemy Python2024. 3. 8. 20:08Day 033 - API 활용

시작하며 API는 Application Programming Interface로, 이를 이용해 소프트웨어를 생성하거나 외부 시스템과 상호작용 할 수 있습니다. 이용자들은 누구나 API의 규칙에 맞게 외부 시스템에 데이터를 요청해 응답받아 데이터를 사용할 수 있습니다. 대충 레스토랑에 우리가 주방에 직접 들어가서 음식을 만들 수는 없지만, 메뉴에 있는 음식을 주문할 수 있다고 생각하면 됩니다. API에서 가장 중요한 것은 API 엔드포인트 입니다. 쉽게 말해서 주소를 알아야 한다는 것인데, 보통 github.io같은 URL로 표현됩니다. API Request 도 중요합니다. 데이터를 요청해 빼 오는 것인데, 정식 절차를 밟아야 데이터를 건네주는데 여기서 정식 절차가 API라고 할 수 있습니다. 가장 간단한..

Day 032 - SMTP와 Datetime 활용 (2)
◎ Python/Udemy Python2024. 3. 8. 20:02Day 032 - SMTP와 Datetime 활용 (2)

시작하며 직전에 포스팅한 smtplib와 datetime을 공부하고, 초초초미니 프로젝트를 한번 만들어 보았습니다. 이번에는 생일을 축하하는 이메일을 자동으로 보내는 초미니 프로젝트를 만들어보려고 합니다. 생일 축하 프로젝트? 프로젝트에서 각 파일들을 봅시다. letter_templates : 메일 양식 birthdays.csv : 연명부. name,email,year,month,day 양식으로 되어 있음 main.py : 코드 작성 이제 구현해야 할 기능들을 살펴봅시다. 1. `birthday.csv`에서 현재 생일인 사람을 가져옵니다. 2. `letter_templates`에서 랜덤한 양식을 가져와 빈칸을 채워 넣습니다. 3. 메일을 보냅니다. 코드 전문입니다. 이번에는 좀 빠르게 구현해보려고 구현에..

image