본문 바로가기

코딩13

Cache와 Retry로 시간·비용 효율적 API 호출하기 문제상황허깅페이스에 SQuAD 데이터를 불러와서 한국어로 번역하여 학습 데이터로 사용하기 위해, 구글번역기 api를 이용하여 이를 구현하려고 한다.데이터를 살펴보니 context 컬럼에는 중복된 데이터가 많이 보인다. 중복된 데이터를 번역하기 위해 매번 API를 호출하면 비효율적이다.실행 시간뿐만 아니라 유료 api를 사용한다면 비용적으로도 많이 부담이 될 것이다.코드 설명의존성 설치번역에 필요한 googletrans와 진행 상황을 출력하기위한 tqdm패키지를 설치한다.!pip install googletrans tqdm캐시 구현이미 한번 api를 호출한 데이터를 반복하지 않도록, 캐시 파일을 json으로 생성하고 관리하는 TranslationCache클래스를 구현한다.enter와 exit함수를 통해 인.. 2024. 11. 24.
백준 BOJ 1929번 소수 구하기 실버3 - Python 풀이 https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 문제 M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. 출력 한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다. 소스 코드 def isPrime(num): if num == 1: return False else: for i in range(2, int(.. 2023. 10. 27.
백준 BOJ 1260번 DFS와 BFS - Python 풀이 https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 문제 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. 입력 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 1.. 2023. 10. 26.
백준 BOJ 1463번 1로 만들기 실버3 - Python 풀이 https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 문제 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 입력 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. 출력 첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다. 소스 코드 import sys n= int(sys.stdin.readline.. 2023. 10. 26.
백준 BOJ 1065번 한수 실버4 - Python 풀이 문제 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다. 출력 첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다. 소스 코드 def isHansu(x): if x < 100: return True elif (x // 100 - (x % 100) // 10) == ((x % 100) // 10 - (x % 10)): return True else: return False n = int(input()) cnt = 0 for .. 2023. 10. 23.
백준 BOJ 4673번 셀프 넘버 실버5 - Python 풀이 문제 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ...과 같은 무한 수열을 만들 수 있다. 예를 들어, 33으로 시작한다면 다음 수는 33 + 3 + 3 = 39이고, 그 다음 수는 39 + 3 + 9 = 51, 다음 수는 51 + 5 + 1 = 57이다. 이런식으로 다음과 같은 수열을 만들 수 있다. 33, 39, 51, 57, 69, 84, 96, 111, 114, 120, 123, 129, 141, ... n을 d(n)의 생성자라.. 2023. 10. 23.