1. 최소공배수, 최대공약수 구하기 파이썬에서 기본 gcd 라이브러리를 제공 from math import gcd def solution(n, m): answer = gcd(n,m) return answer 유클리드 호제법 숫자 n, m가 있을 때(단 n>m), n를 m로 나눈 나머지(re)와 m 의 최대 공약수 는 n 와 m 의 최대 공약수 가 같다는 것을 의미한다. # gcd def gcd(n, m): while m > 0: n, m = m, n % m return n 최소공배수 from math import gcd def lcm(a, b): return a * b // gcd(a,b) 2. 소수구하기: 에라스토스테네스의 체 배수들을 소수 목록에서 제거하는 방식 n의 제곱근까지만 알아봐도 된다. (나..
zip 기본 내장함수와 *list (unpacking) 을 사용하여, 2중 for 문을 사용하지 않고 row, column 을 뒤집을 수 있다. N*N 배열이 아닌 각 배열 크기가 다른 2차원 배열인 경우 예상하지 않은 결과가 나올 수 있다. # 2차원 배열 행, 열 뒤집기 arrays = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] flip_arrays = list(map(list, zip(*arrays))) #1 print(arrays) #2 print(flip_arrays) #3 for item in zip(*arrays): print(item) # 출력 #1 [[1, 2, 3], [4, 5, 6], [7, 8, 9]] #2 [[1, 4, 7], [2, 5, 8], [3, 6, 9]..
문제주소 programmers.co.kr/learn/courses/30/lessons/67259 내 풀이 answer = 10e9 def dfs(board, pos, n, cost_board): x, y = pos[0][0], pos[0][1] dir = pos[1] cost = pos[2] global answer # 종료조건 # 끝지점 도착 if pos[0] == (n, n): answer = min(answer, pos[2] * 100) return # cost 가 answer보다 커지는건 최솟값이 아니므로 종료 if cost > answer: return # cost_board에 저장된 값이 지금 cost 보다 작다는 것은 이미 방문한 곳이고, 이미 최솟값이므로 종료 if cost_board[x]..
문제주소 programmers.co.kr/learn/courses/30/lessons/67258 내 풀이 def solution(gems): items = len(set(gems)) shopping = dict() start = 0 end = 0 candidates = [] for i in range(len(gems)): shopping[gems[i]] = shopping.get(gems[i], 0) + 1 end = i if len(shopping) == items: for j in range(start, len(gems)): # start를 현재 j 값으로 셋팅하고 start = j candidates.append((end - start, [start + 1, end + 1])) # 다음을 위해 다음..
문제주소 programmers.co.kr/learn/courses/30/lessons/64062 내 풀이 def solution(stones, k): if k == 1: return min(stones) # k가 1이 아닌 경우 answer = binary_search(k, stones, 1, max(stones)) return answer def is_cross(stones, answer, k): start = 0 end = 0 for i in range(1, len(stones)): if stones[i] answer: start = i if end - start == k - 1: return False return True def binary_search(k, stones, start, end): ..
문제주소 programmers.co.kr/learn/courses/30/lessons/17678 내 풀이 from collections import deque def solution(n, t, m, timetable): time_table = [] for time in timetable: times = time.split(":") time_table.append(int(times[0]) * 60 + int(times[1])) time_table.sort() time_table = deque(time_table) # 셔틀버스 확인 candidate = 0 for i in range(n): start_time = 9 * 60 + t * i time_list = [] for _ in range(m): if t..
문제주소 programmers.co.kr/learn/courses/30/lessons/64064?language=python3 내 풀이 import re from itertools import product def solution(user_id, banned_id): answer_list = list() banned_list = [] banned_length = len(banned_id) for banned in banned_id: banned = banned.replace("*", ".") p = re.compile(banned) id_list = [] for user in user_id: if len(banned) == len(user) and p.match(user): id_list.append(u..
문제주소 programmers.co.kr/learn/courses/30/lessons/60062 내 풀이 from collections import deque from itertools import permutations # 항상 index 처리가 어렵다. 맨 앞, 뒤 index는 특별하게 확인해주기 def checkVisited(weak, friends): index = 0 visited = [False for _ in range(len(weak))] for friend in friends: dist = 0 while friend >= dist and index < len(weak)-1: visited[index] = True index += 1 dist += weak[index] - weak[inde..
- Total
- Today
- Yesterday
- 운영체제
- JPA
- JS
- 모의면접준비
- 알고리즘
- Spring
- DB
- 카카오
- 우아한테크코스
- Transaction
- 네트워크
- javascript
- 회고
- TIL
- TCP/IP
- 마스터즈코스
- 학습로그
- React
- 월간회고
- OS
- 인증
- 개발공부일지
- 내부코드
- java
- 객체지향
- 글쓰기미션
- CS
- python
- 코드스쿼드
- 우테코수업
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |