파이썬 11

[Python] 백준 온라인 저지 1541 잃어버린 괄호

목차 문제 https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 설계&풀이 아이디어는 옳게 접근했으나, 구현을 못했다. 요건은 간단하다. -를 기준으로 split 해주고, 나머지 애들을 다 묶어버리면 된다. 여러가지 케이스가 있는데.. 10+20-10 맨 앞이 +로 시작해서 묶이는 경우 10-20 맨 앞이 단순 숫자인 경우 10-20+30 맨 앞은 숫자, 뒤가 +로 묶이는 경우 10 하나만 들어오는 경우 10+20 +만 들어오는 경우 10-20..

[Python] 백준 온라인 저지 15649 N과 M(1)

목차 문제 https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 설계&풀이 백트래킹의 기본문제다. 매번 DFS/BFS를 도망만 다녔다가 각잡고 제대로 공부해보고자.. N과M 시리즈를 시작해봤다. 요건은 간단하다. 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. - 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열 백트래킹이란걸 아는 상태에서 DFS를 적용해보려고 했는데, 도저히 감..

[Python] Leetcode 134. Gas station

목차 문제 https://leetcode.com/problems/gas-station/ Gas Station - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 설계&풀이 정말 간만에 머리를 앓았던 문제라서 포스팅한다. 코테에서 자주 보이던 그리디 문제인데, 처음엔 완탐으로 했다가 시간초과가 났다. # 시간초과 풀이... # 한바퀴 만큼 순회 n = len(gas) if n == 1: if gas[0] >= cost[0]: return 0 else: -1 for ..

[Python] 백준 온라인 저지 1764

목차 문제 https://www.acmicpc.net/problem/1764 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. www.acmicpc.net 설계&풀이과정 먼저 시간초과가 난 내 코드다. import sys # 시간초과 풀이 n, m = map(int, input().split()) hPeople = [ sys.stdin.readline().rstrip() for _ in range(n) ] sPeople = [ sys.stdin.readline().rstrip() for _ in range(m) ] answer = [] ..

[알고리즘 이론] 다익스트라(Dijkstra), 최단 경로 알고리즘

목차 이 글은 Notion에서 작성 후 재편집한 포스트입니다. 개요 다익스트라 최단 경로 알고리즘은 그래프에서 여러 개의 노드가 있을 때, 특정한 노드에서 출발하여 다른 노드로 가는 각각의 최단 경로를 구해주는 알고리즘이다 다익스트라 최단 경로 알고리즘은 ‘음의 간선’이 없을 때 정상적으로 동작한다. 음의 간선이란, 0보다 작은 값을 가지는 간선을 의미하는데, 현실 세계의 길(간선)은 음의 간선으로 표현되지 않으므로 다익스트라 알고리즘은 실제로 GPS 소프트웨어의 기본 알고리즘으로 채택되곤 한다. 다익스트라 최단 경로 알고리즘은 기본적으로 그리디 알고리즘으로 분류된다. 매번 ‘가장 비용이 적은 노드’를 선택해서 임의의 과정을 반복하기 때문이다. 참고 https://www.youtube.com/watch?..

[Python] 백준 온라인 저지 1003

목차 문제 https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 설계 및 풀이 DP 문제이다. 사실 문제 유형을 어떻게 알아내는지는 좀 더 문제를 풀어봐야 알 것 같다. 처음엔 재귀로 풀었는데, 재귀로 풀다보니 시간 초과가 되어서 뭘까 고민하다가 결국 답지를 봤는데.. DP더라... 먼저, 재귀로 푼 코드다. cntZero = 0 cntOne = 0 def fibonacci(n): global cntZero global cntOne if n == 0: cntZero += 1 return 0 elif n == 1: cntOne += 1 return..

[에러] list indices must be integers or slices, not str

문제 사항 https://kkkapuq.tistory.com/71 [Python] 네이버 기사 댓글 크롤링하기 2.0v 이 포스팅은 Notion에서 작성 후 재편집하여 포스팅 된 글입니다. 개요 이전에 썼던 코드를 다시 쓰려고했는데, 갑자기 동작이 안됐다. 이유를 보니, 네이버의 html코드의 속성 id값이나 이런것들이 kkkapuq.tistory.com 해당 포스팅에서 쓴 코드를 밑에 출력하고, 파일로 생성하려고 했는데, 다음과 같은 에러가 발생했다. 원인 분석 간단했다. 파이썬에선 자료형이 명시적으로 나타나지 않으니..생긴 문제였다. numbers = ['one', 'two', 'three', 'four', 'five'] for n in numbers: print(n) 이런 코드가 있다고 치면.. 결..

[Python] 네이버 뉴스 기사 댓글 크롤링하기(Feat. Selenium, Webdriver)

오늘의 목표 네이버 뉴스 기사의 정보 크롤링하기 해당 기사에 달린 댓글들의 남녀 성비, 연령대별 비율, 댓글 및 등록시간 크롤링 참고 1. 기사 크롤링하기 https://hogni.tistory.com/69 파이썬 네이버 뉴스 기사 크롤링하기: 초보자도 실행할 수 있는 코드 이전에 뉴스 알림 봇을 만드는 내용을 작성했던 적이 있습니다. 당시에는 네이버 모바일 버전에서 뉴스 기사를 가져오는 방법을 사용했었는데, PC 버전에서는 어떻게 할 수 있는지 여쭤보시는 �� hogni.tistory.com 2. 댓글 크롤링 예제 - https://blog.pignu.kr/2018/03/26/naver_crawling.html 네이버뉴스 댓글 크롤링 with python 간단히 해보는 네이버 댓글 크롤링 blog.pi..

[Pycharm] 파이참에서 패키지 설치하기

개요 파이썬에서 패키지를 설치할 땐 두가지 방법이 있다. 명령 프롬프트와 python -install 명령어를 통해 설치하는것과 파이참과 같은 IDE에서 제공하는 패키지를 다운받는 방식이다. 둘 다 어느것을 사용해도 상관없지만, 대부분 파이참을 이용해서 개발하므로 메모해둔다. 진행 과정 별거 없다. 설정(ctrl + alt + s)을 들어가서 project:Python - Project Interpreter에 들어가면 현재 설치된 패키지를 한눈에 확인이 가능한데, 여기서 우측의 +를 눌러보자 그럼 다음과 같은 창이 뜰텐데, 여기서 그냥 원하는 패키지 검색하고 install 눌러서 설치만 해주고 import해서 쓰시면된다. 간단!

[Python] 리스트의 여러가지 사용방법

개요 파이썬의 리스트는 자바, C의 배열과 유사한 형태를 띄고있다. 아직 파이썬 문법에 익숙하지 않아서 메모해본다. 오늘의 주제 리스트와 관련된 함수 알아보기 리스트 조작법 진행 과정 1. 파이썬의 리스트는 같은 리스트에 여러개의 자료형 삽입이 가능하다. 예제로 사용할 리스트(계속 쓰인다) list = ["이름", 1, 3, 5.2] 2. 리스트값 조회 리스트의 기본적인 조회방법은 다음과 같다. 예제 list = ["이름", 1, 3, 5.2] print(list[0]) print(list[1]) print(list[2]) print(list[3]) 결과 이름 1 3 5.2 3. 리스트값 추가 추가하기는 여러가지 방식이있다. 3-1. append 함수 사용하기 list = ["이름", 1, 3, 5.2]..