목차 [Python]복붙으로 끝내는 셀레늄 크롤링(1) [Python]복붙으로 끝내는 셀레늄 크롤링(2) 지난 글에서 우리는 크롤링과 셀레늄에 대한 간단한 소개와 그 예를 들어보았다. 그중 셀레늄 소개에서 웹 드라이버를 마치 사용자가 다루듯 할 수 있다는 부분이 있었는데, 이 글에선 그 기능을 간단하게나마 구현해보려고 한다. keyword_naver_tab_2.py 먼저 지난 글에서 가져왔던 네이버 연관검색어를 검색에서부터 시작해 가져오는 로직을 작성하려고 한다. 지난 글에서와는 다른 방식으로 CSS 셀렉터를 찾아서 시작해보자. 먼저 네이버 모바일 홈페이지에 접근한다. https://m.naver.com/ 네이버 모바일 메인 네이버 모바일 메인에서 다양한 정보와 유용한 컨텐츠를 만나 보세요 m.naver..
목차 [Python]복붙으로 끝내는 셀레늄 크롤링(1) [Python]복붙으로 끝내는 셀레늄 크롤링(2) 크롤링(Crawling), 혹은 스크래핑(Scraping)은 웹 페이지를 그대로 가져와서 거기서 데이터를 추출해 내는 행위를 가리키는 단어이다. https://namu.wiki/w/%ED%81%AC%EB%A1%A4%EB%A7%81 크롤링 - 나무위키 이 저작물은 CC BY-NC-SA 2.0 KR에 따라 이용할 수 있습니다. (단, 라이선스가 명시된 일부 문서 및 삽화 제외) 기여하신 문서의 저작권은 각 기여자에게 있으며, 각 기여자는 기여하신 부분의 저작권 namu.wiki 공공데이터와 같은 데이터를 제외하고 별개의 데이터를 수집하려면 반드시 필요한 기술인데, 특히 대량의 데이터를 모아 가공하고 머신..
목차 문제 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한 가지 예이다. 입력 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) 출력 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 풀이 계속해서 수열의 규칙을 찾아 동적계획법으로 푸는 문제이다. 11726번 문제는 아예 피보나치수열과 그 규칙이 같아 생략하기로 했다. 이번 문제도 N을 1씩 증가시키며 규칙을 찾으면 간단한데, 우선 수열을 늘어놓으면 다음과 같다. 1, 1, 3, 5, 11, 21, ... 이를 굳이 수식으로 나타내자면 다음과 같이 쓸 수 있을 것이다. $$a_{n} = 2 * a_{n-2} + ..
목차 파이썬으로 간단한 앱과 게시판을 구현하던 중 데코레이터라는 단어를 접하게 되었다. 처음에는 그냥 파이썬에서 사용되는 애너테이션이구나~ 하고 사용해 왔으나 조금 다른 점이 있다고 해서 정리하고 넘어가기로. 이 글에서는 먼저 애너테이션과 데코레이터의 정의를 정리한 뒤 그 공통점과 차이점에 대해 간략하게 정리한다. 결론부터 말하자면 둘 다 코드의 확장성, 가독성을 높이고 메타데이터를 제공하는 데 사용되며, 디테일한 용도, 언어, 실행시점, 사용 대상 등에 차이가 있다. Annotation 애너테이션은 직역하면 주석이라는 뜻이다. 하지만 코드레벨에 사용자가 입력한 주석과 구분하기 위해 그냥 애너테이션이라고 부른다. 주로 Java, Kotlin, C#등의 정적 언어에서 사용되며 '@'를 사용하고, 메타데이터..
__init__.py는 파이썬에서 일반적으로 사용되는 기능이며, 특정 프레임워크나 라이브러리에 국한되지 않는다. 해당 파일의 역할은 파일이 소속된 디렉토리를 패키지로 인식하게 만드는 것이며 파일은 비어있을 수도, 초기화 코드를 포함할 수도 있는데 도대체 패키지로 인식된다는 말이 무슨 말인지 자바와 스프링에 절어있는 내겐 쉽게 이해가 되지 않았다. 게다가 공부를 조금 해보아도 자바와 스프링에서는 1:1로 매칭되는 것이 없어 따로 정리하기로 했다. 일반 디렉토리와 패키지가 어떻게 다른지 정리하면서 기능에 대해 알아보자. Directory 일반 디렉토리는 말 그대로 파일들을 모아 담고 있는 폴더이다. 외부에서 해당 디렉토리의 파일을 직접 참조하려면 전체 경로를 사용해야 하고 다른 파일이나 모듈에서 자동으로 찾..
목차 이전 글에서 자바에서의 전략패턴 구현에 대해 알아본 적이 있다. [Java]전략패턴 [Java]전략패턴 목차 Strategy Pattern 전략 패턴은 정책 패턴(Policy Pattern)이라 불리기도 하며, 소프트웨어의 실행 중 상황에 맞는 알고리즘을 선택해 실행할 수 있도록 하는 객체 지향 디자인 패턴이다. 예를 들자면 gnidinger.tistory.com 그 이후로 이런저런 구현을 하다가, 파이썬을 이용해 개발을 해야 할 일이 생겼는데, 아예 처음부터 전략패턴을 적용해서 구조를 설계하면 좋을 것 같다는 생각이 들어서 공부하게 되었다. 이 글에서는 위의 글과 마찬가지로 정렬 로직을 이용해 전략패턴을 구현하는 법을 살펴본다. 각 구현에 대한 세부사항은 아래 글에 적혀있다: [Java+Pytho..
파이썬으로 알고리즘을 풀다가 enumerate()라는 내장함수를 만나게 되었다. 이 함수의 역할은 순회 가능한(iterable) 객체(리스트, 튜플, 문자열 등)를 입력받아 인덱스와 해당 요소를 동시에 포함하는 iterator를 반환한다. 이를 이용해 반복문에서 인덱스와 요소를 동시에 다룰 수 있으며, 필요하다면 딕셔너리와 같은 자료형으로 매핑할 수도 있다. 바로 코드로 예를 들어보자. fruits = ['apple', 'banana', 'orange'] # 리스트의 인덱스와 값을 출력 for index, fruit in enumerate(fruits): print(index, fruit) 0 apple 1 banana 2 orange 시작 인덱스를 0이 아닌 1로 지정하는 것도 가능하다. fruits ..
목차 컴프리헨션은 여러 가지 뜻이 있지만, 파이썬의 맥락에서는 '함축'이라는 단어가 가장 어울리는 것 같다. 그 뜻대로 파이썬 컴프리헨션이란 리스트, 딕셔너리, 집합 등을 축약해서 만들어주는 기능이다. 처음 접할 땐 '뭐 이렇게까지 해야 하나..' 싶지만 일단 익숙해지면 기존의 방식이 되려 거추장스럽다. 시작하기 전에, 자바로 입문한 내게 있어 배열 선언과 요소 입력은 아래와 같은 방식이었다. arr = [0] * 5 for i in range(5): arr[i] = input() print(arr) ['1', '2', '3', '4', '5'] 물론 작동은 잘한다. 다만 파이썬에는 배열이 따로 없고 리스트가 존재하며, 자바의 배열과 달리 크기가 고정되는 타입이 아니다. 그래서 아래와 같이 고쳐서 사용했..
팩토리얼은 간단하게 n!로 나타내며, 1부터 n까지의 모든 자연수를 1씩 더해가며 곱하는 연산을 가리킨다. 개념을 더 정확하게 파악하려면 1부터 n까지의 자연수가 아닌 n부터 1까지의 자연수를 곱하는 게 맞지만, 지금은 그게 중요한게 아니니까. 파이썬으로는 크게 세 가지 방법으로 팩토리얼을 구현할 수 있다. 물론 바텀업 방식의 동적계획법 등은 여기에선 빠져있다. 가장 먼저, 파이썬의 math 라이브러리에서 제공하는 기본 함수를 사용하자. 그냥 가져다 쓰면 된다. import sys import math n = int(sys.stdin.readline().rstrip()) print(math.factorial(n)) sys 라이브러리를 사용하지 않으면 세 줄로 팩토리얼 계산이 끝나버린다. 다음 방법은 재귀..
알고리즘을 풀다가 최대공약수를 구해야 하는 문제가 나와, 별생각 없이 순진하게 아래와 같이 풀었다. import sys a, b = map(int, sys.stdin.readline().split()) x = max(a, b) y = min(a, b) while x % y != 0: z = x % y x = y y = z print(a * b // y) 유클리드 호제법을 사용해서 간단하게 풀었다고 생각하고 넘어갔는데.. 혹시나 해서 검색해보니 역시나 파이썬 math 라이브러리에는 최대공약수와 최소공배수를 구해주는 함수가 있었다! 그것도 유클리드 호제법을 이용해 최적화가 되어 있는! 적잖이 김이 빠지지만, 사용 방법은 아래와 같다. import math # 최대공약수 print(math.gcd(35, 65..
- Total
- Today
- Yesterday
- 리스트
- 맛집
- a6000
- 유럽
- 여행
- 세계일주
- 세계여행
- 야경
- 기술면접
- 세모
- 스트림
- java
- 면접 준비
- 칼이사
- 자바
- spring
- BOJ
- 파이썬
- 동적계획법
- Algorithm
- Python
- 백준
- Backjoon
- 지지
- RX100M5
- 남미
- 알고리즘
- 유럽여행
- 중남미
- 스프링
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |