2024/04 7

L - 리스코프 치환 원칙(Liskov Substitution Principle) [기본]

리스코프 치환 원칙은 상속 관계에 있는 클래스 간에 호환성을 보장하는 객체지향 설계 원칙이다. 자식 클래스가 부모 클래스의 역할을 완전히 대체할 수 있을 만큼 기대된 동작이 보장되어야 한다는 의미이다. 예제 # 부모 class Event: def __init__(self, event_name): self.event_name = event_name def event_execute(self): pass # 자식 1 class MinorEvent(Event): def __init__(self, event_name): super().__init__(event_name) def event_execute(self): print(f"Minor event. {self.event_name}") # 자식 2 class M..

알고리즘/SOLID 2024.04.14

[프로그래머스] 12945. 피보나치

12945. 문제 해답 def solution(n): answer = 0 # 기본 피보나치 수 default_fibo = [0, 1] # n번째 만큼 피보나치 수 생성 for i in range(n): default_fibo.append(default_fibo[i] + default_fibo[i+1]) answer = default_fibo[n] % 1234567 return answer 출처: https://school.programmers.co.kr/learn/courses/30/lessons/12945 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr

[프로그래머스] 12911. 다음 큰 숫자

12911 문제. 해답 def solution(n): answer = 0 next_n = n # 자연수 n의 이진수 1의 개수 n_one_count = format(n, 'b').count('1') # 제한사항 n은 1,000,000 이하 while next_n < 1_000_000: next_n += 1 # n의 다음 자연수의 이진수 1의 개수 next_n_one_count = format(next_n, 'b').count('1') if n_one_count == next_n_one_count: answer = next_n break return answer 출처: https://school.programmers.co.kr/learn/courses/30/lessons/12911 프로그래머스 코드 중심의..

[프로그래머스] 12941. 최솟값 만들기

문제 12941. 해답 def solution(A,B): # 먼저 정렬 A.sort() B.sort(reverse=True) answer = 0 for i in range(len(A)): answer += A[i] * B[i] return answer 출처: https://school.programmers.co.kr/learn/courses/30/lessons/12941 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr

[프로그래머스] 12924. 숫자의 표현

12924 문제. 숫자의 표현 해답 def solution(n): answer = 1 # 자기 자신 포함 # 전체 순환 for i in range(1, n): # 시작 수를 하나씩 늘림 sum = i for j in range(i+1, n): # 연속적이여야 하기 때문에 i부터 시작 sum += j if sum == n: answer += 1 break elif sum > n: break return answer 출처: https://school.programmers.co.kr/learn/courses/30/lessons/12924 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. prog..

[Python] 2. 멀티스레딩으로 MariaDB 병렬 삽입(with 대신증권 API)

2024.04.07 - [Python] - [Python] 1. 멀티스레딩으로 MariaDB 병렬 삽입(with 대신증권 API) [Python] 1. 멀티스레딩으로 MariaDB 병렬 삽입(with 대신증권 API) 대신증권 API를 활용해서 해외 주식의 주가를 가져오는 코드를 작성 중이였는데 문제가 발생했다. 너무 오래 걸린다.. 한 종목당 2 ~ 5초 정도는 걸리는 듯하다. 한 종목당 2800개의 데이터를 가져 potatoparadox.tistory.com 전에 대신증권 API를 통해서 받은 주식 데이터를 MariaDB에 넣으려고 했으나 오래걸리는 이슈가 있었다. 그래서 병렬작업으로 데이터를 밀어넣기 위해 커넥션 풀을 만들어줬다. 그 후 작업으로는 생성한 커넥션 풀을 가지고 병렬작업을 해주어야 하는..

이슈 2024.04.12

[Python] 1. 멀티스레딩으로 MariaDB 병렬 삽입(with 대신증권 API)

대신증권 API를 활용해서 해외 주식의 주가를 가져오는 코드를 작성 중이였는데 문제가 발생했다. 너무 오래 걸린다.. 한 종목당 2 ~ 5초 정도는 걸리는 듯하다. 한 종목당 2800개의 데이터를 가져오는데, 종목 전체가 11,464개이다. 위 이미지에 보이는 4000개 정도 넣은 것도 귀찮아서 반나절은 기다려서 받은 것이다. 문제가 되는 코드를 보자. # 모든 종목코드 순회 for idx, stock_info in enumerate(all_stock_code): logging.info(f"{idx} / {len(all_stock_code)} .... {round((idx/len(all_stock_code)) * 100, 2)}%") # 특정 종목코드의 금액 정보 가져오기 maria_connection...

이슈 2024.04.07