일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백준 16236
- spring cloud
- 백준 15685
- 백준 19238
- with recursive
- Kotlin
- Spring
- spring oauth
- 프로래머스
- 백준 17626
- re.split
- Spring Boot
- java
- 백준 파이썬
- 백준 17779
- java 기술면접
- spring security
- JPA
- MSA
- sql 기술면접
- Coroutine
- 웹어플리케이션 서버
- JVM
- MySQL
- 백준 16235
- springboot
- 파이썬
- 프로그래머스
- 백준 16719
- 백준
- Today
- Total
목록알고리즘/Programmers (83)
시작이 반
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]..
최단경로의 개수를 구하는 문제이다.. 문제를 잘못읽어서 최단경로를 구하는 문제인줄 알았다....(몇시간을 날린건지..) 오른쪽과 아래로만 이동할 수 있다. 중학교때 배운 경로의 수 구하는 문제를 알면 풀 수 있는 문제이다. 1, x 좌표를 1로 채운다 (-1이 하나라도 있으면 그 이후에는 -1로 채운다.) x, 1 좌표를 1로 채운다 (-1이 하나라도 있으면 그 이후에는 -1로 채운다.) 해당 좌표로 올 수 있는 경우의 수는 해당좌표의 위, 왼쪽을 더한 값이다. (-1이 있다면 -1이 아닌 값을 넣어준다.) m, n의 좌표가 답이다. 하지만 이렇게 풀면 학교에 도착하지 못하는 경우에는 m, n 좌표에 -1이 들어간다. 예외처리를 하여 -1일경우 0을 반환해준다. def solution(m, n, pudd..
N = 1 일때 나타낼 수 있는 값 5 N = 2 일때 나타낼 수 있는 값 55, 5+5, 5-5, 5*5, 5/5 즉 N = 1의 집합을 조합해서 만든 경우이다. N = 3 일때 555, 5+(5+5), 5-(5+5), (5+5)-5, (5+5)*5, (5+5)/5, 5/(5+5), 5+(5-5), 5-(5-5), (5-5)-5, (5-5)*5, (5-5)/5, 5/(5-5), .... 이런식이다 즉 N = 1, N = 2의 조합이다. N = 2, N =1( N = 1, N = 2와 중복임으로 생략) N = 4 일때 N = 1, N = 3 N = 2, N = 2 N = 3, N = 1 ( N = 1, N = 3과 중복임으로 생략) 즉, 절반까지 구하면된다. def solution(N, number): ..
간단한 DP문제이다. 삼각형의 꼭대기에서 바닥까지 이어지는 경로중 합이 가장 큰값을 구한다. n번째 줄의 i번째 숫자는 n-1번째 줄의 i-1, i 번째 숫자중 큰값과 해당 값을 더해서 구한다. def solution(triangle): answer = 0 l = len(triangle) dp = [[0] * l for _ in range(l)] dp[0][0] = triangle[0][0] for i in range(1, l): for j in range(0, i+1): if j == 0: dp[i][j] = dp[i-1][j] + triangle[i][j] elif j == i+1: dp[i][j] = dp[i-1][j] + triangle[i][j] else: dp[i][j] = max(dp[i-1..
이분탐색 문젱이다. 최대로 걸리는 시간과 최소로 걸리는 시간을 기준으로 문제를 푼다. 심사관이 주어진 시간동안 모든 사람을 처리할 수 있으면 right값을 줄여주고 심사관이 주어진 시간동안 모든 사람을 처리할 수 없으면 left값을 줄여준다. def solution(n, times): answer = 0 left = 1 right = max(times) * n while left = n: # 종료되기 전에 answer을 바꿔줌 right = mid - 1 answer = mid else: # 종료 조건 바뀌는 부분 left = mid + 1 return answer solution(6, [7, 10])
갈수 있는 여행 경로를 정하는 문제 dfs로 풀었지만 테스트케이스 1번만 통과가 안된다... 무슨 문젠지 모르겠다.. (질문에 있는 모든 케이스 통과) 1번을 통과하기위해서는 같은 티켓이 여러장 있다고 가정하고 풀면된다고 하는데 고려해서 풀었음에도 통과가 안된다.. (ㅠㅠ 못풀었음) def solution(tickets): answer = [] place = list() i = 0 for ticket in tickets: if ticket[0] == 'ICN': ticket.append(i) place.append(ticket) i += 1 place.sort(key=lambda x: x[1]) for j in place: visited = [False] * len(tickets) visited[j[2]..