본문 바로가기

프로그래밍

(27)
AWS 필수 키워드 9개 AWS란? Amazon Web Service. 웹 및 앱 서비스 제공자가 컴퓨팅 파워, 저장소, 데이터베이스 등 광범위한 서비스를 제공할 수 있도록 도와주는 아마존의 클라우드 컴퓨팅 서비스. AWS 필수 키워드 1. EC2 (Elastic Compute Cloud) Virtual machine을 제공하는 서비스. 이러한 virtual machine에서 서비스 제공자는 웹서비스, 애플리케이션, 데이터베이스 등을 호스팅하며 벡앤드 서버를 구동할 수 있다. 또한 서비스 제공자가 직접 하드웨어 및 운영체제를 선택할 수 있다. 이렇게 탄력적으로 제공된다는 점에서 elastic compute cloud라고 이름 붙여진 듯하다. 2. S3 (Simple Storage Service) 파일을 저장할 수 있는 저장소를 .. 2023. 10. 3. 10:15
파이썬 구글 이미지 웹 크롤링 코드 기존 구글에 돌아다니는 코드는 더이상 지원하지 않는 문법을 사용하여, 다소 업데이트된 코드로 작성함 인자로 검색어를 받아 크롬에서 구글 이미지를 통해 검색 후 저장 from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By from selenium.webdriver.chrome.service import Service import time import urllib.request import os, sys def crawling(word: str).. 2023. 3. 6. 08:08
카드마술 프로그램 카드마술 프로그램 기본적인 정보이론 분야의 실습 프로그램. $N$ 개의 정보를 분류하기 위해서는 최대 $\log_{2}{N}$개의 질문이 필요하다는 간단하고 기초적인 엔트로피 개념을 적용한 실습인데, 마술이라는 거창한 타이틀이 달려있다. 모르고 봤으면 신기했을려나...? def trans_num(n: int, item: int) -> str: bin_str = bin(item)[2:] bin_str = '0' * (n - len(bin_str)) + bin_str return bin_str[::-1] def make_deck(n: int) -> list[list[int]]: deck = [[] for _ in range(n)] arr = [i for i in range(2**n)] for item in .. 2023. 3. 1. 13:13
[방학의 PS] 그리디 알고리즘 - BOJ_1931, BOJ_1541 그리디 알고리즘의 정의 그리디 알고리즘이란 어떤 문제를 해결해야 할 때, 그 문제를 반복되는 여러 단계로 나눈 뒤에, 각 단계의 문제에 대한 최적해를 구하는 것을 반복하는 알고리즘입니다. 그리디 알고리즘의 예 간단한 예를 통해 말씀드리면, 거스름돈 구하기 문제를 셍각해 볼 수 있습니다. 만일 여러분이 편의점 알바생이고, 손님에게 X원의 현금을 거슬러주어야 할 때, 누구나 자연스럽게 가장 큰 단위의 화폐부터 거슬러주게 됩니다. 예를 들어 6670원을 거슬러준다면, 5000원짜리 한 장, 1000원 짜리 한 장, 500원 한 개, 100원 한 개, 50원 한 개, 10원 2개 순서로 거슬러 드릴 것입니다. 즉 X원을 거슬러 드리는 문제를 5000원을 거슬러 드리는 문제, 1000원을 거슬러 드리는 문제..... 2022. 7. 2. 04:21
[방학의 PS] 다이나믹 프로그래밍 2 - BOJ_1003 https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 피보나치 함수가 문제로 나왔습니다. 저는 아무 생각 없이 문제를 풀다가 시간 초과 크리가 뜨고 말았습니다😭. 아무래도 피보나치 함수를 냅다 문제로 냈을 리는 없을 텐데 말입니다. 제가 너무 순진하게 생각했죠ㅎㅎ. 다시 시간 제한을 보니 주어진 시간이 고작 0.25초 밖에 되질 않습니다. 보통 1-2초로 주어진다는 것을 생각하면 매우 짧은 시간이죠. 어떤 방식으로 풀어야 할 것 같으신가요? 피보나치 함수에 시간을 단축한다면? 네, 맞습니다. 다이내믹 프로그래밍을 응용한 문제입니다. 우리는 다이나.. 2022. 6. 16. 04:33
[방학의 PS] DFS와 BFS - BOJ_2606 어제 살짝 예고 드렸듯이 오늘은 DFS와 BFS의 구현에 대해 심층적으로 분석해보고자 합니다. 이 글은 자료구조와 알고리즘을 개략적으로나마 훑어보신 분들을 대상으로 한 글이기 때문에 DFS가 뭐고 BFS가 무엇인지에 대한 설명은 생략하도록 하겠습니다. 그럼 이제부터 본격적으로 다음과 같은 단계에 따라 DFS와 BFS를 구현해보도록 하겠습니다. 1단계 그래프 생성 2단계 DFS와 BFS의 공통점에 대해서 생각 3단계 DFS와 BFS를 각각 구현 1. 그래프 생성 당연하지만 그래프부터 생성해야 합니다. 당연하지만 그래프는 문제에서 주어지는 방식, 프로그램이 요구하는 방식에 따라 생성하는 방법이 천차만별이긴 합니다. 저는 아래와 같은 방식으로 구현했습니다만 사실 별로 중요한 코드는 아니라고 봅니다. # n은 .. 2022. 6. 15. 06:51
[방학의 PS] set, deque, 리스트의 참조 복사 오늘은 원래 DFS와 BFS를 공부하고자 하였으나, 몇 가지 추가적인 공부가 필요하여 이를 보충하도록 하겠습니다. 1. set set은 파이썬의 데이터 타입입니다. 딕셔너리나 리스트와 같이 말입니다. 이는 수학에서 집합과 매우 유사한 특징을 지니는데, 우선 다음과 같이 선언 및 정의하게 됩니다. s1 = set([1, 2, 3, 3]) # [1, 2, 3, 3]이라는 리스트를 set 자료형으로 바꿔 s1에 저장한다는 의미입니다. s1 >> {1, 2, 3} set의 중요한 특징은 다음과 같습니다. 중복을 허용하지 않는다. 순서가 존재하지 않는다. 위의 코드에서 보신 것처럼 set은 중복을 허용하지 않습니다. 또한 순서가 존재하지 않는데, 이는 인덱스로 접근할 수 없다는 것을 의미합니다. 예를 들면 s1 .. 2022. 6. 15. 06:35
[방학의 PS] 다이나믹 프로그래밍(DP) - BOJ_1463 오늘은 새로운 알고리즘에 대해서 이야기해 보겠습니다. 바로 다이나믹 프로그래밍이라고 불리는 알고리즘입니다. 혹시 처음 들어 보신 분이 계시다면, 이름이 생소하고 고급져서 왠지 어렵게 느껴지실 수도 있을 것 같습니다. 그러나 걱정할 것 없습니다. 사실 다이나믹 프로그래밍(이하 dp)이라는 이름은 알고리즘의 개발자가 펀딩을 따내기 위해 일부러 있어 보이게 작명한 네이밍이거든요ㅎㅎ. 실상은 아주 단순한 알고리즘을 의미합니다. dp의 핵심은 문제를 반복되는 단계로 쪼개어 앞선 단계의 값을 뒤의 단계에서 활용한다는 것입니다. 이 말의 의미를 피보나치 수열을 예로 들어 자세히 알아보겠습니다. 우리가 코딩을 통해 피보나치 수열의 n번째 수를 구하는 경우, 다음과 같이 재귀를 주로 활용합니다. def fib(n): i.. 2022. 6. 15. 06:17