전체 글
-
26. 짝지어 제거하기Programmers 2023. 7. 12. 09:24
문제 설명 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다. 문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있는지 반환하는 함수를 완성해 주세요. 성공적으로 수행할 수 있으면 1을, 아닐 경우 0을 리턴해주면 됩니다. 예를 들어, 문자열 S = baabaa 라면 b aa baa → bb aa → aa → 의 순서로 문자열을 모두 제거할 수 있으므로 1을 반환합니다. 제한사항 문자열의 길이 : 1,000,000이하의 자연수 문자열은 모두 소문자로 이루어져 있습니다. ..
-
25. 카펫Programmers 2023. 7. 11. 16:07
문제 설명 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다. Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다. 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다. 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 ..
-
24. 카드 뭉치Programmers 2023. 7. 11. 14:39
문제 설명 코니는 영어 단어가 적힌 카드 뭉치 두 개를 선물로 받았습니다. 코니는 다음과 같은 규칙으로 카드에 적힌 단어들을 사용해 원하는 순서의 단어 배열을 만들 수 있는지 알고 싶습니다. 원하는 카드 뭉치에서 카드를 순서대로 한 장씩 사용합니다. 한 번 사용한 카드는 다시 사용할 수 없습니다. 카드를 사용하지 않고 다음 카드로 넘어갈 수 없습니다. 기존에 주어진 카드 뭉치의 단어 순서는 바꿀 수 없습니다. 예를 들어 첫 번째 카드 뭉치에 순서대로 ["i", "drink", "water"], 두 번째 카드 뭉치에 순서대로 ["want", "to"]가 적혀있을 때 ["i", "want", "to", "drink", "water"] 순서의 단어 배열을 만들려고 한다면 첫 번째 카드 뭉치에서 "i"를 사용한..
-
[Parsing] Scrapy를 활용하여 웹 스크래핑 하기Project 2023. 7. 9. 00:44
Pyspider를 활용하여 크롤러를 구현해보려고 했으나, 왜 예시가 없나 했더니 코드도 구식이고 지금 시점에서 구현이 어려웠다...(공식문서에 자랑(?)했던 WebUI도 이제 지원하지 않는 듯) 그래서 대체재를 찾던 도중 Scrapy가 눈에 띄어 이것을 활용하여 만들어보기로 한다. +) 6년 전에 마지막으로 깃헙에 커밋된 코드라서, 자잘한 오류만 짚고 넘어가자면 gcd(최대공약수)를 구현하는데 math가 아닌 현재 지원하지 않는 fractions 모듈을 사용한다던가, 무차별적인 six 모듈에서 함수를 가져와 일일이 코드를 고치는 데 애를 먹기도 했고, pickle error가 자주 발생하기도 했다... 또한 인용하거나 따라해볼만한 튜토리얼 같은 문서가 부족하다 Scrapy? https://keyhyuk-..
-
7월 1주차 Error + Unknown 모음.Data Engineer 2023. 7. 8. 16:34
- six 모듈 : Six는 python2 및 3 호환성 라이브러리로, 유틸리티 기능을 제공한다. 두 Python 버전 모두에서 호환되는 Python 코드 작성을 목표로 Python 버전 간의 차이점을 매끄럽게 하기 위해 만들어졌다. Python 2.7 및 3.3 이상을 지원하며, 하나의 Python 파일에만 포함되어 있으므로 프로젝트에 쉽게 복사할 수 있다. https://six.readthedocs.io pyspider를 지금 뜯어보고 있는데 six 모듈은 위 설명과 같이 이전 파이썬 버전의 함수를 사용할 수 있게 해주는 모듈인 것 같다. - Python 상위/하위 폴더에 있는 파일 import 하기 파이썬에는 패키지 import 말고 내가 만든 파일을 불러 올 수 있다. 다음과 같은 문제는 깃헙에 ..
-
PySpiderProject 2023. 7. 8. 11:24
Pyspider는 웹 크롤링을 위해 개발된 모듈이다. 웹 크롤링에는 2가지 지켜야할 특성이 있다. 1. 100-200개의 웹사이트를 수집했을 시 그들은 온/오프라인에서 그들의 템플릿을 때때로 변화시킨다. - 우리는 웹사이트의 변화 여부를 확인하기 위해 강력한 감시도구가 필요하며, 각각의 웹사이트에 스크립트(템플릿)를 작성하게 해주는 좋은 도구가 필요하다. 2. 데이터는 반드시 웹사이트가 업데이트 되었을 때 5분 내로 수집되어야만 한다. - 다음과 같은 문제를 인덱스 페이지를 빈번하게 확인하고, 최근 업데이트 시간(혹은 최근 응답 시간)과 같은 것들을 사용해 페이지의 변화요부를 확인함으로써 해결하였다. 게다가, 우리는 빠진 부분이 없는지 확인하기 위해 x일 이후 페이지들을 재확인한다. Pyspider는 w..
-
23. 폰켓몬Programmers 2023. 7. 4. 08:53
문제 설명 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. 홍 박사님 연구실의 폰켓몬은 종류에 따라 번호를 붙여 구분합니다. 따라서 같은 종류의 폰켓몬은 같은 번호를 가지고 있습니다. 예를 들어 연구실에 총 4마리의 폰켓몬이 있고, 각 폰켓몬의 종류 번호가 [3번, 1번, 2번, 3번]이라면 이는 3번 폰켓몬 두 마리, 1번 폰켓몬 한 마리, 2번 폰켓몬 한 마리가 있음을 나타냅니다. 이때, 4마리의 폰켓몬 중 2마리를 고르는 방법은 다음과 같이 6가지가 있습니다. 첫 번째(3번), 두 번째(1번) 폰켓몬을 선택 첫 번째(3번), 세 번째(2번) 폰켓몬을 선택 첫..
-
웹 크롤링 데이터를 MySQL에 저장하기Project 2023. 7. 3. 12:08
Mac에 Mysql 설치 brew install mysql brew install mysql-client MySQL 실행 $ mysql.server start Mysql 데이터베이스 및 유저 생성 mysql > CREATE DATABASE crawl_data DEFAULT CHARACTER SET utf8; mysql > CREATE USER crawl_usr IDENTIFIED BY 'Test001'; exit 입력 후, Python으로 Mysql 접속 코드 만들기 import MySQLdb conn = MySQLdb.connect( user="crawl_usr", passwd="Test001", host="localhost", db="crawl_data" # charset="utf-8" ) print..