n 팩토리얼의 값에 5와 2가 몇 개가 들어가있는지 질의하는 문제이다. 그럼 n 팩토리얼에 5, 2가 몇 개 들어가있을 까를 알아야한다. 2를 기준으로, 24! 는 2는 모든 짝수에 들어가있다. 12개 그리고, 4, 8, 12, 16, 20, 24 에 추가적으로 2가 들어가있다. (4 = 22, 8= 222, 12 = 223, 16=224, 20 = 225, 24 = 226) 이 때, 8, 16, 24는 추가적으로 들어가있다. 문제전략은 계속 base를 나눠가면서 몇 개의 2가 남아있는지 세는 것이다. 24 / 2 = 12 (21, .... 212) 12 / 2 = 6 ( 221, .... 226) 6 / 2 = 3 ( 2221, ... 2223) 3 / 2 = 1 ( 2222*1 ) ^^.. def g..
병합정렬 수행 중 k번째로 저장되는 숫자를 구한다. 값이 저장될때마다 k 카운팅을 세주면 구할 수 있다. 파이썬은 ++가 없어서 좀 코드가 길어졌다.. 해결하는 과정서 더 현명한 방법이 없을까? 라는 생각이 들었던 문제다. k 번째 수 라는 병합정렬 응용 문제가 있긴한데... 기시감에 다시 찾아보았는데 같은 류의 문제는 아닌 듯하다. import sys input = sys.stdin.readline n, k = list(map(int, input().split())) _v = list(map(int,input().split())) ans = -1 def merge_sort(v, i, j): if i < j: m = (i+j)//2 merge_sort(v, i, m) merge_sort(v, m+1, j..
정답 코드가 힌트에 있어서 .. 쉬웠다. def recursion(s, l, r, cnt): if l >= r: return (1, cnt) elif s[l] != s[r]: return (0, cnt) return recursion(s, l+1, r-1, cnt+1) def isPalindrome(s): return recursion(s, 0, len(s)-1, 1) n = int(input()) for i in range(n): s = input() a, b = isPalindrome(s) print(f'{a} {b}')
import sys input = sys.stdin.readline n = input() list = list(map(int, input().split())) sorted = [i for i in list] sorted.sort() d = {} idx = 0 for i in range(int(n)): t = d.get(sorted[i], -1) if t == -1: t = idx idx += 1 d[sorted[i]] = t for i in list: print(d[i],end=' ')
class Solution: def lengthOfLongestSubstring(self, s: str) -> int: if len(s) == 0: return 0 f = 0 t = 1 d = {} d[s[f]] = f ans = 1 while t < len(s): idx = d.get(s[t], -1) if idx == -1: temp = t - f + 1 ans = max(temp, ans) else: while f
# Definition for singly-linked list. # class ListNode: # def \_\_init\_\_(self, val=0, next=None): # self.val = val # self.next = next class Solution: def addTwoNumbers(self, l1: Optional\[ListNode\], l2: Optional\[ListNode\]) -> Optional\[ListNode\]: result = ListNode() head = result append = 0 while l1 or l2 : val = append if l1 is not None: val += l1.val if l2 is not None: val += l2.val resul..
참으로 허탈한 문제. 아무리 생각해도 충분한 시간복잡도에 통과할 수 있는데, 시간초과가 났다. 그래서 개선된 속도로 풀어도 시간초과가 났는데.. 알고보니 입출력 시간 문제였다. 세 번으로 나누어서 풀었다. 처음이 가장 복잡도가 안좋은 방법. 그러더라도 문제를 풀기엔 충분한 스펙이였다. 문제는 입력 시간이였다. import sys input = sys.stdin.readline _n = int(input()) l = [ int(input()) for _ in range(_n) ] print( round(sum(l)/len(l)) ) sorted = [ f for f in l ] sorted.sort() print( sorted[_n//2] ) f = { } d = 0 for i in l: s = f.get..
Leetcode - Two sum problems has several approaches. first one is O(n^2) time complexity with two for loops. I'll not cover that approach in this post. 1 O(n log\_n) approach 1 sorting arrays. remind that origin index should be remained. 2 using two pointers, if sum value is same with target value then return it. 3 if sum value is larger than target value, then decrease tail pointer. If in op..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/7GtvG/btrGarJ4ikA/AkMw2wqiUAKJDBIqxwwZ1K/img.png)
FastAPI 시작하기 시작하기에 앞서, 가장 좋은 시작방법은 도큐먼트를 읽는 것 이다. https://fastapi.tiangolo.com/ko/. 1 uvicorn run .. 명령어로 uvicorn을 시작할 수 있지만, 명령어를 main.py에 작성해두는 것이 좋다. 2 개발모드에서는 reload True를 주면 코드 변경에 따라, 다시 빌드해주는 watch모드를 킬 수 있다. watch 모드를 키려면 해당 app attribute가 있는 파일을 문자열로 제공해줘야한다. (python 3.10, uvicorn 0.18.2 기준) 3 '/' 경로에서 index.html을 별도 명시적 경로 없이 제공해주기 위해선, html 옵션을 켜줘야한다. 4 cors 등의 헤더 전처리는 middleware 패턴을 ..
- Total
- Today
- Yesterday
- 아레나
- 최단경로 알고리즘
- Propositional and Predicate Logic
- 시뮬레이션
- 아레나시뮬레이션
- flutter
- Simulation
- arena simulation
- 그라파나
- 자바스크립트 예제
- 데이터 중심 애플리케이션 설계
- paul wilton
- 이산수학
- 항해99
- 명제논리
- 로젠
- rosen
- 이산 수학
- Grafana
- 백준
- beginning javascript
- 엄청난 인내심과 시뮬레이션을 위한 아레나 툴
- 자바스크립트
- 대규모 시스템 설계 기초
- javascript
- 가상 면접 사례로 배우는 대규모 시스템 설계 기초
- 아레나 시뮬레이션
- Arena
- grafana cloud
- Discrete Mathematics
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |