python 11

백준(BOJ) 13251 : 조약돌 꺼내기 (자바, 파이썬)

13251번: 조약돌 꺼내기 첫째 줄에 뽑은 조약돌이 모두 같은 색일 확률을 출력한다. 정답과의 절대/상대 오차는 10-9까지 허용한다. www.acmicpc.net 설계 전체 경우의 수 계산: 상자에 있는 모든 돌들 중에서 K개를 뽑는 경우의 수(total)를 계산. 같은 색상의 돌을 뽑을 확률 계산: 각 색상별로 K개를 뽑을 경우의 확률을 계산하고, 이를 모두 더하여 총합(same)을 구함. 최종 확률 계산 및 출력: 같은 색상의 돌을 뽑을 총 확률(same)을 전체 경우의 수(total)로 나누어 최종 확률을 계산하고 출력. 조합 계산 함수 (getCombination): 조합(nCr)을 계산하기 위한 함수로, 더 큰 숫자에 대한 팩토리얼 계산을 피하기 위해 단순화된 조합 계산 방식을 사용. 구현 ..

Problem_Solving 2024.01.12

프로그래머스 : 하노이의 탑 (자바, 파이썬)

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설계 재귀적으로 가장 큰 원판을 목적지 기둥으로 옮기고, 나머지 원판들을 중간 기둥을 이용해 재배치하는 과정을 반복 n 개의 원판을 from 기둥에서 to 기둥으로 이동시키는 로직을 재귀적으로 구현합니다. n == 1인 경우, 가장 작은 원판을 바로 to 기둥으로 옮깁니다. n > 1인 경우, n - 1개의 원판을 보조 기둥(여기서는 6 - from - to로 계산)으로 옮기고, 가장 큰 원판을 to 기둥으로 옮긴 후, 보조 기둥에 있는 원판들을 다시 to 기둥으로 옮깁니다. 구현 코드 자바(Java) imp..

Problem_Solving 2024.01.12

백준(BOJ) 15661 : 링크와 스타트 (자바, 파이썬)

15661번: 링크와 스타트 첫째 줄에 N(4 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에 S가 주어진다. 각 줄은 N개의 수로 이루어져 있고, i번 줄의 j번째 수는 Sij 이다. Sii는 항상 0이고, 나머지 Sij는 1보다 크거나 같고, 100 www.acmicpc.net 설계 N명의 팀원들 사이의 능력치 차이를 최소화하는 문제 문제 해결을 위해 백트래킹 알고리즘을 사용 각 팀원들의 능력치는 2차원 배열 S에 저장되며, 두 팀 간의 능력치 차이는 재귀적으로 계산 재귀 메서드 사용 start와 depth를 매개변수로 하여 현재 팀 구성과 깊이를 추적 현재 구성의 능력치 차이(currentScore)를 계산하고, 이를 minDiff와 비교하여 최소값을 갱신 depth가 N / 2에 도달하면 ..

Problem_Solving 2024.01.12

백준(BOJ) 1527 : 금민수의 개수 (자바, 파이썬)

1527번: 금민수의 개수 첫째 줄에 A와 B가 주어진다. A는 1보다 크거나 같고, 1,000,000,000보다 작거나 같은 자연수이다. B는 A보다 크거나 같고, 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 설계 주어진 범위 내에서 "금민수"를 찾는 문제를 해결 금민수란 숫자 4와 7로만 이루어진 숫자를 의미. 예를 들어, 4, 7, 47 등은 금민수. 모든 수를 검사 : 순회하며 주어진 숫자가 금민수인지 판별. 숫자를 10으로 나눈 나머지가 4 또는 7이 아닐 경우, 금민수가 아님. 백트래킹을 통한 금민수 생성 : 재귀적으로 금민수를 생성. 시작 숫자로 4와 7을 사용하고, 각 단계에서 숫자의 끝에 4 또는 7을 추가하여 새로운 금민수를 생성 첫 번째 방법 (모..

Problem_Solving 2024.01.11

백준(BOJ) 2942 : 퍼거슨과 사과 (자바, 파이썬)

2942번: 퍼거슨과 사과 맨체스터 유나이티드의 감독 퍼거슨은 빨간 사과를 R개, 초록 사과를 G개 가지고 있다. 훈련장에 있는 선수들 중 몇 명에게 나누어 주려고 한다. 단, 선수들이 서로 같은 개수의 사과를 받지 못하 www.acmicpc.net 설계 빨간 사과(R)와 초록 사과(G)를 일정한 수의 선수들에게 똑같이 나눠주되, 남는 사과가 없도록 하는 경우의 수를 구하는 문제를 해결 문제의 핵심은 “모든 선수에게 같은 수의 사과를 나눠주면서 남는 사과가 없어야 한다”는 조건 → 이 조건을 만족시키기 위해 빨간 사과와 초록 사과의 수에 대한 최대공약수(Greatest Common Divisor, GCD)를 구하는 것이 중요 최대공약수(GCD)의 중요성 같은 수의 사과 배분: 빨간 사과와 초록 사과를 모..

Problem_Solving 2024.01.10

Playwright로 Colab에서 연합뉴스 크롤링하기

Playwright로 Colab에서 연합뉴스 크롤링하기 Colab 노트북 231221_Playwright로 Colab에서 연합뉴스 크롤링하기.ipynb Colaboratory notebook colab.research.google.com 연합뉴스 최신기자 페이지(https://www.yna.co.kr/news/1)를 크롤링하는 코드를 짜달라는 요청이 들어왔다. 아니 컴공 복전한 사람이 이런 것도 못해? 라고 힐난하고 책망하려던 차에... --------------------------------------------------------------------------- SSLError Traceback (most recent call last) /usr/local/lib/python3.10/dist-p..

Today_I_Learned 2023.12.21

multiprocessing를 통한 병렬 처리 파이썬 코드 예제

데이터 처리에서 2~3배 정도 성능 향상을 목표로 사용할 수 있는 테크닉. 데이터 저장 시 multiprocessing.Queue를 꼭 사용해야함 (공식 문서 참고) # !pip install finance-datareader -q from multiprocessing import Pool, Queue, cpu_count import FinanceDataReader as fdr import time # 테스트에 쓸 데이터 목록 top50 = fdr.StockListing('ETF/KR').Symbol.head(50) # 일반 처리 start_time = time.time() [fdr.DataReader(symbol) for symbol in top50] print(f'NORMAL : {(time.time..

Today_I_Learned 2023.09.30

네이버 증권 ETF 시세 정보 및 항목 리스트 API 조회 파이썬 코드 예제

네이버 증권의 ETF 시세 정보의 API에 접근하는 코드 FinanceDataReader에 유사한 접근할 수 있는 기능이 있지만, 단순 이름만 제공하고 시가총액 등 세부 내용엔 접근할 수 없다. import requests import pandas as pd def get_etf_item_list(): # 데이터 요청 URL = 'https://finance.naver.com/api/sise/etfItemList.nhn' response = requests.get(URL) data = response.json().get('result').get('etfItemList') # 테이블화 & 컬럼 정리 df = pd.DataFrame(data) df.columns = ['종목코드', '카테고리', '종목명',..

Today_I_Learned 2023.09.30

장내채권 가격 데이터 조회 파이썬 코드 예제

신한투자증권에서 제공하는 장내시세 페이지의 API가 너무 대놓고 노출되어 있어서 참을 수 없었다. pandas를 통해서 금융 데이터 분석하기에는 꽤나 괜찮은 예제 예제 코드 import requests import pandas as pd class bond: def __init__(self): self.get_prices() pass def get_prices(self): # 데이터 받기 URL = 'https://www.shinhansec.com/siw/wealth-management/bond-rp/590401/data.do' response = requests.get(URL) data = response.json().get('body').get('반복데이타0') # 테이블 전처리 df = pd.Dat..

Today_I_Learned 2023.09.29

Cloudflare R2 파일 업로드 파이썬 코드 예제

Boto3에 이슈(urllib3)가 있어서 직접 AWS V4 Signiture를 꾸역꾸역 구현 Cloudflare R2에 도메인을 붙여서 사용하고, 더불어 구현에서의 유연성을 위해 환경변수를 넣어서 설정 예제 코드 ''' %env r2_account_id = ... %env r2_access_key_id = ... %env r2_secret_access_key = ... %env r2_bucket = ... %env r2_domain = ... !echo $r2_account_id $r2_access_key_id $r2_secret_access_key $r2_bucket $r2_domain %%writefile sample.csv col1, col2, col3 1, 2, 3 4, 5, 6 7, 8, 9 ..

Today_I_Learned 2023.09.29