전체 글

10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 파이썬 collections 라이브러리의 deque 자료구조를 활용하면 쉽게 구현할 수 있는 문제였다. 코드는 다음과 같다. import sys from collections import deque input = sys.stdin.readline n = int(input()) queue = deque() for _ in range(n): operation = input().rstrip() if operation == "size": print(len..
· DB/Crawling
1. 쿠팡 상품 크롤링 쿠팡에 원하는 검색어를 검색하고 상위 100위까지를 크롤링하는 코드다. 크롤링 결과는 액셀에 저장한다. import openpyxl import requests from bs4 import BeautifulSoup def select_by_css_selector(soup, css_selector: str): try: result = soup.select_one(css_selector).get_text().strip() except AttributeError: result = "None" return result if __name__ == "__main__": workbook = openpyxl.Workbook("coupang_crowling_results.xlsx") keyword..
· DB/Crawling
1. 워드 클라우드 워드 클라우드란 중요한 단어를 더 잘 보이게 만드는 기법으로 아래와 같은 것을 말한다. 이를 만들기 위해서 첫 번째로 본문 내용을 합치고 그 다음 워드 클라우드를 만들면 된다. 2. 워드 클라우드 제작 이전에 작성했던 코드를 통해 기사를 가져오고, 해당 내용을 클립보드에 복사했다. 클립보드 복사에는 python 라이브러리인 pyperclip을 사용했다. import time import pyautogui import pyperclip import requests from bs4 import BeautifulSoup keyword = pyautogui.prompt("검색어를 입력하세요.") page = pyautogui.prompt("몇 페이지를 탐색할지 입력하세요.") # 본문 전체 ..
· DB/Crawling
1. python-docx python에서 워드를 활용하기 위해서는 python-docx 라이브러리를 사용할 수 있다. python-docx 설치를 위해 아래 명령어를 실행하면 된다. pip install python-docx 기본적인 메서드에는 워드 객체를 생성하는 Document()와 제목을 작성하는 add_heading(), 본문을 작성하는 add_paragraph() 등이 있다. 예시 코드는 다음과 같다. from docx import Document # 1. 워드 생성 document = Document() # 2. 워드에 데이터 추가 # level = 제목의 크기 (0 = 가장 크며 아래에 밑줄이 있다. 1~6으로 갈수록 크기가 작아진다.) document.add_heading('제목', le..
· DB/Crawling
1. 네이버 뉴스 링크 가져오기 네이버 뉴스의 링크를 가져오기 위해 먼저 네이버의 검색 창에 원하는 검색어를 검색하고, 뉴스 링크들을 확인해보자. 이때 "네이버 뉴스" 기사로 가려면 아래와 같이 info_group를 클래스 값으로 가진 div 태그 안에 info를 클래스 값으로 가진 a 태그 두 개가 존재해야한다. 우리가 가져올 링크는 a 태그 중 2번째에 있는 링크를 가져올 것이다. 링크를 가져오기 위한 코드는 아래와 같다. import requests from bs4 import BeautifulSoup response = requests.get("https://search.naver.com/search.naver?ssc=tab.news.all&where=news&sm=tab_jum&query=%EC..
1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 해당 문제는 아래와 같이 단순히 구현만 한다면, 시간 초과가 발생한다. n, k = map(int, input().split()) count = 1 index = 0 result = list() check_list = [False for _ in range(n)] while True: if not check_list[index]: if count == k: result.append(str(index+1)) check_list[index] = True count = 1 else: count += 1 if index >= n-1: if False not i..
10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 단순히 문제의 요구대로 구현만 해주면 되는 문제였다. 단, 해당 문제는 First In First Out 구조인 큐를 구현하는 문제였기 때문에 collections 라이브러리의 deque를 활용했다. 코드는 다음과 같다. import sys from collections import deque input = sys.stdin.readline n = int(input()) queue = deque() for _ in range(n): operatio..
1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net 처음에는 문제의 요구사항대로 그냥 구현만 해주면 된다고 생각했다. 즉, 커서라는 변수를 하나 선언하고 커서의 위치에 따라 L, D, B, P라는 명령어 각각을 올바르게 수행해주면 된다고 생각한 후 코드를 작성했다. import sys input = sys.stdin.readline ''' L: 커서를 왼쪽으로 한 칸 옮긴다 / 커서가 맨 앞이면 무시한다. D: 커서를 오른쪽으로 한 칸 옮긴다 / 커서가 문장의 맨 뒤면 무시한다. B: 커서 왼쪽에 있는 문자를 삭제..
코딩마루
Nam's Study Note