일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- to_attr
- QuerySet
- DjangoCache
- DRF
- database
- DjangoRestFramework
- Transaction
- apitestcase
- CI
- 도커
- EC2
- aws
- Python
- Continuous Deployment
- 백준
- aggregate
- CD
- testcase
- racecondition
- dry-yasg
- Git
- Continuous Delivery
- annotate
- 코루틴
- Coroutine
- django
- nestedfunction
- F객체
- Prefetch_related
- docker
- Today
- Total
목록Algorithms (11)
BackEnd King KY

✔️문제 https://www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net ✔️풀이 n = int(input()) l = list(map(int, input().split())) p = list(map(int, input().split())) a=0 cost = p[0] for i in range(n-1): if cost > p[i]: cost = p[i] a += cost * l[i] print(a) l은 거리의 값을 저장하는 리스트, p는 가격..

✔️문제 https://www.acmicpc.net/problem/1789 1789번: 수들의 합 첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다. www.acmicpc.net ✔️풀이 n = int(input()) i=1 while True: if (i*(i+1))/2 == n: print(i) break if (i*(i+1))/2 > n: print(i-1) break i+=1 1부터 차례 대로 더해서 n이 되나 체크합니다. 만약 n=210이라면 (x * (x+1))/2=210이 되어야 하며, x=20입니다. 이럴 경우 가능한 자연수 개수의 최대값은 20이 됩니다. 만약 n=211이라면 x=20일 떄는 210이고 x=21이라면 231이 돼서 값을 넘깁니다 그러면 211은 어떻..

✔️문제 https://www.acmicpc.net/problem/10162 10162번: 전자레인지 3개의 시간조절용 버튼 A B C가 달린 전자레인지가 있다. 각 버튼마다 일정한 시간이 지정되어 있어 해당 버튼을 한번 누를 때마다 그 시간이 동작시간에 더해진다. 버튼 A, B, C에 지정된 시간은 www.acmicpc.net ✔️풀이 #300초 60초 10초 n = int(input()) a,b,c=0,0,0 if n%10 > 0 : print(-1) else: a = n//300 b = (n%300)//60 c = ((n%300)%60)//10 print(a,b,c) 5분, 1분 10초 -> 300초, 60초, 10초로 단위를 통일 시켜 준 뒤 몫과 나머지를 이용한 타 그리디 알고리즘 문제처럼 풀어..

✔️문제 https://www.acmicpc.net/problem/2217 2217번: 로프 N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하 www.acmicpc.net ✔️풀이 k = int(input()) a=0 l=[] m=[] for i in range(k): l.append(int(input())) l.sort(reverse=True) for i,v in enumerate(l): m.append( (i+1)*l[i] ) print(max(m)) 받은 중량을 역순으로 나눈 뒤, 인덱스와 곱한 값을 배열에 넣어줍니다. 최대 중량을 구하는 문..

✔️문제 https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net ✔️풀이 n = input().split("-") l=[] for i in n: a=0 m = i.split("+") for j in m: a += int(j) l.append(a) c = l[0] * 2 - sum(l) print(c) -가 핵심이기 때문에 - 기준으로 분리해서 받은 뒤 +연산된 걸 더해주기 위해 for문안에서 +로 스플릿을 했습니다. 1-34+11-22-23으로 ..

✔️문제 https://www.acmicpc.net/problem/1026 1026번: 보물 첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거 www.acmicpc.net ✔️풀이 n = int(input()) a = list(map(int, input().split())) b = list(map(int, input().split())) s = 0 while n>0: s += min(a)*max(b) a.pop(a.index(min(a))) b.pop(b.index(max(b))) n-=1 print(s) a배열의 최소값과 b배열의 최대값을 곱해서 ..

✔️문제 https://www.acmicpc.net/problem/5585 5585번: 거스름돈 타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사 www.acmicpc.net ✔️풀이 #1000 - input한 금액의 최소개수 n = int(input()) n = 1000 - n a = 0 while n>0: if n>=500: a+=n//500 n = n%500 if n>=100: a+=n//100 n = n%100 if n>=50: a+=n//50 n = n%50 if n>=10: a+=n//10 n = n%10 if n>=5: a+=..

✔️문제 https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net ✔️풀이 n = int(input()) l = [] for i in range(n): l.append(list(map(int, input().split()))) l = sorted(l, key=lambda a:a[0]) l = sorted(l, key=lambda a:a[1]) cnt = 0 base = 0 for i,j in l: if i >= base: base = j cnt +=1 print(cnt) 정렬 방법에 대해 찾아봤는데 sorted에서 key=lamda a:a[0] 이렇게 하면 a[0] ..