파이썬에서는 인터페이스를 통한 다형성의 성질을 잘 사용하지 않으며, 의존관계 주입에 대한 활용성이 많이 떨어진다.( Django Framework에서는 더욱이 그러한 것을 볼 수 있다.) 하지만 파이썬에서도 인터페이스를 통해 역할과 구현을 나누면 많은 이점을 챙길 수 있다. 이번에 실제로 회사 코드를 리팩토링을 하게 되면서 사용한 방식에 대해서 예를 들며 설명해보겠습니다. Before ( 리팩토링 이전의 모습) def do(self): number = self.line.number if number == 'One': result = self.do_One() elif number == 'Two': result = self.do_Two() elif number == 'Three': result = self...
참고 : https://programmers.co.kr/learn/courses/30/lessions/12927 이 문제를 풀고나서 다른 사람들과 풀이방식이 조금 다르기에 이렇게 올려본다. 처음에 이 문제를 보았을 때 최댓값을 계속 뽑아내서 -1을 해주면 되겠구나라고 생각을 해서 바로 최대 힙을 생각했다. 파이썬에서는 최대힙을 구현하는 방법은 다들 아시겠지만 원래 숫자에 -1을 곱하면 그렇게 구현할 수 있다. 그래서 다음과 같이 구현하였다. import heapq from functools import reduce def solution(n, works): if n>=sum(works): return 0 heap = [] for v in works: heapq.heappush(heap, -v) while..
문제: programmers.co.kr/learn/courses/30/lessons/1835 코딩테스트 연습 - 단체사진 찍기 단체사진 찍기 가을을 맞아 카카오프렌즈는 단체로 소풍을 떠났다. 즐거운 시간을 보내고 마지막에 단체사진을 찍기 위해 카메라 앞에 일렬로 나란히 섰다. 그런데 각자가 원하는 배치가 모두 programmers.co.kr 필자는 해당 문제를 c++로 풀어 통과했지만 파이썬으로 변환하여 코드를 소개하겠습니다. import itertools n=2 data= ["M~C1"] mem = ['A','C','F','J','M','N','R','T'] pairs = list(map(list,itertools.permutations(mem,8))) count=0 for pair in pairs: ..
문제: programmers.co.kr/learn/courses/30/lessons/64065 코딩테스트 연습 - 튜플 "{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1] programmers.co.kr 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 def solution(s): answer = [[] for _ in range(501)] check=[0 for _ in range(100001)] maxLen=0 ans=[] s=s[1:-1] s=s.spli..
문제:programmers.co.kr/learn/courses/30/lessons/60058 1 2 3 4 5 6 7 8 9 10 1. 입력이 빈 문자열인 경우, 빈 문자열을 반환합니다. 2. 문자열 w를 두 "균형잡힌 괄호 문자열" u, v로 분리합니다. 단, u는 "균형잡힌 괄호 문자열"로 더 이상 분리할 수 없어야 하며, v는 빈 문자열이 될 수 있습니다. 3. 문자열 u가 "올바른 괄호 문자열" 이라면 문자열 v에 대해 1단계부터 다시 수행합니다. 3-1. 수행한 결과 문자열을 u에 이어 붙인 후 반환합니다. 4. 문자열 u가 "올바른 괄호 문자열"이 아니라면 아래 과정을 수행합니다. 4-1. 빈 문자열에 첫 번째 문자로 '('를 붙입니다. 4-2. 문자열 v에 대해 1단계부터 재귀적으로 수행한 ..
문제:programmers.co.kr/learn/courses/30/lessons/1829 코딩테스트 연습 - 카카오프렌즈 컬러링북 6 4 [[1, 1, 1, 0], [1, 2, 2, 0], [1, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 3], [0, 0, 0, 3]] [4, 5] programmers.co.kr 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 from collections import deque m,n=map(int,input().split()) visited = [[0 for _ in range(100)] for _ in range(100)] picture =[[..
문제:www.acmicpc.net/problem/16198 16198번: 에너지 모으기 N개의 에너지 구슬이 일렬로 놓여져 있고, 에너지 구슬을 이용해서 에너지를 모으려고 한다. i번째 에너지 구슬의 무게는 Wi이고, 에너지를 모으는 방법은 다음과 같으며, 반복해서 사용할 수 있 www.acmicpc.net import sys input=sys.stdin.readline N=int(input()) li=list(map(int,input().split())) visited=[False]*N visited[0]=True visited[-1]=True ans=list(li) ret=0 def func(sum,x): global ret if all(visited): ret=max(ret,sum) return f..
문제:www.acmicpc.net/problem/14225 14225번: 부분수열의 합 수열 S가 주어졌을 때, 수열 S의 부분 수열의 합으로 나올 수 없는 가장 작은 자연수를 구하는 프로그램을 작성하시오. 예를 들어, S = [5, 1, 2]인 경우에 1, 2, 3(=1+2), 5, 6(=1+5), 7(=2+5), 8(=1+2+5)을 만들 www.acmicpc.net 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 import sys input=sys.stdin.readline N=int(input()) li=list(map(int,input().r..
- Total
- Today
- Yesterday
- DRF
- 면접
- 카카오
- 자바
- django
- 알고리즘
- 파이썬
- Spring
- PostgreSQL
- 백준
- postgres
- Java
- thread
- headers
- Command Line
- Celery
- env
- Python
- dockerignore
- Pattern
- ubuntu
- docker-compose
- 프로그래머스
- 2021 KAKAO BLIND RECRUITMENT
- 그래프
- Collections
- Linux
- BFS
- docker
- setattr
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |