일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백준
- 파이썬
- MySQL
- java 기술면접
- 프로래머스
- with recursive
- sql 기술면접
- 백준 16236
- 백준 19238
- Kotlin
- JPA
- 프로그래머스
- 백준 파이썬
- springboot
- re.split
- 백준 15685
- Spring Boot
- java
- 백준 16235
- 백준 16719
- 백준 17779
- spring oauth
- 백준 17626
- spring cloud
- 웹어플리케이션 서버
- Coroutine
- spring security
- MSA
- JVM
- Spring
- Today
- Total
목록파이썬 (92)
시작이 반
정규식에 대해 정확히 알진 못한다. 구글링결과 내가 원하던 결과와 제일 비슷한 것을 찾을 수 있었다. 왜 이렇게 나오는지는 알아보자ㅏㅏㅏㅏㅏ import re test = 'abbbsdfcdZZZZ11111)' test1 = re.sub('(([a-zA-Z0-9])\\2{1,})', '', test) # 연속된 같은 문자 변환 (2개이상) test2 = re.sub('(([a-zA-Z0-9])\\2{2,})', '', test) # 연속된 같은 문자 변환 (3개이상) test3 = re.sub('(([a-zA-Z0-9])\\2{3,})', '', test) # 연속된 같은 문자 변환 (4개이상) test4 = re.sub('(([a-zA-Z0-9])\\2{4,})', '', test) # 연속된 같은 문..
다익스트라 알고리즘이다. 다익스트라 알고리즘은 edge의 가중치가 양수만 있을때 사용할 수 있다. 2가지 방법으로 풀 수 있다. 1. 해당 노드에서 이어진 노드들중 가중치가 가장 작은 경로를 선택한다. 2. 우선순위 큐를 사용하여 해결할 수 있다. 우선순위 큐를 이용하여 풀었다. (가장 작은 가중치를 선택해야함) 파이썬에서는 우선순위 큐를 사용하기위해 heapq를 사용할 수 있다. (동작은 min heap인듯 하다) 다익스트라를 풀기위해 필요한 것들 1. 우선순위 큐에 사용될 list ( queue = list() ) 2. 가중치를 저장할 list ( distance = list() ) 세팅 distance[시작점] = 0 우선순위 큐에 (해당 점의 가중치, 해당점) 을 넣는다. queue가 빌때까지 반..
programmers.co.kr/learn/courses/30/lessons/72412
programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 조합, 사전 관련 문제이다. course 수에 따른 조합을 구하여 사전에 넣는다. from itertools import combinations def solution(orders, course): answer = [] for cour in course: menus = dict() temps = list() for order in orders: temps.extend(list(..
programmers.co.kr/learn/courses/30/lessons/72410 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 정규 표현식 이용 import re def solution(new_id): #1단계 answer = new_id.lower() #2단계 answer = re.sub('[~!@#$%^&*\(\)=+\[\{\]\}:?,\/]', '', answer) #3단계 answer = re.sub('\.+', '.', answer) #4단계 if answer: if answer[0]..
문제를 이해를 못했다.. 출력에 첫째 줄에 가장 인접한 두 공유기 사이의 최대 거리를 출력한다. 라고 써있는데 인접한 두 공유기 사이 최대 거리가 뭔소린지 몰라서 문제부터 이해했다... 이해한 내용) 공유기 개수 3 좌표 : 1 2 4 8 9 만약 거리 = 2 라면 1에 설치하면 1+2 = 3 -> 다음 설치할 공유기 위치는 3이상인 좌표이다. 2에는 설치 못한다. 4에 설치 4+2 = 6 -> 다음 설치할 공유기 위치는 6이상인 좌표이다. 8에 설치 8+2 = 10 -> 다음에 설치할 공유기 위치는 10이상인 좌표이다. 9에는 설치 못한다. 끝----- 설치한 공유기 개수 3개 거리가 2일때 만족 만약 거리 = 3 라면 1에 설치하면 1+3 = 4 -> 다음 설치할 공유기 위치는 4이상인 좌표이다. 2..
나무를 0미터를 가져갈 수 도있고 최대 높이를 가져갈 수도있다. 즉 절단기의 길이는 최대 높이를 자르려면 맨 밑동을 잘라야한다 -> 0 0미터를 가져간다면 가장큰 높이의 나무만큼 절단기 높이를 설정한다 -> max(trees) n, m = map(int, input().split(' ')) trees = list(map(int, input().split(' '))) def binary(): left = 0 right = max(trees) while left 0: height += tree - mid if height >= m: # 잘린 길이가 구하려는 것보다 크면 더 큰높이로 자르기 left = mid + 1 elif height < m: # 잘린 길이가 구하려는 것보다 작으면 더 작은 높이로 자르기 ..
첫번째 풀이(실패) k, n = map(int, input().split(' ')) lans = [int(input()) for _ in range(k)] min_lan = min(lans) result = list() def binary(): global min_lan left = 1 right = min_lan prev = (left + right) // 2 while left = n: left = mid right = prev min_lan = (left + right) // 2 binary() print(max(result)) 최종 풀이 k, n = map(int, input().split(' ')) lans = [int(input()) for _ in range(k)] result = list(..