일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- spring cloud
- Kotlin
- MySQL
- re.split
- springboot
- 백준 16236
- 웹어플리케이션 서버
- java
- 프로래머스
- JPA
- 백준 파이썬
- MSA
- 백준 15685
- 백준 17779
- Spring
- spring oauth
- sql 기술면접
- java 기술면접
- Coroutine
- 백준 16235
- spring security
- 백준 16719
- 파이썬
- 백준
- Spring Boot
- 백준 19238
- JVM
- with recursive
- 백준 17626
- 프로그래머스
- Today
- Total
목록파이썬 (92)
시작이 반
programmers.co.kr/learn/courses/30/lessons/67258 코딩테스트 연습 - 보석 쇼핑 ["DIA", "RUBY", "RUBY", "DIA", "DIA", "EMERALD", "SAPPHIRE", "DIA"] [3, 7] programmers.co.kr 모든 보석을 포함하는 최소 구간을 구하는 문제이다. 우선 모든 구간이기 때문에 안될걸 알지만 생각나는 방법이 없어서 nC2를 이용하여 모든 구간을 구하여 풀었다. gems 배열의 크기는 1 이상 100,000 이하이다 100000C2를 하면 50억(?)정도 나온다... 조합으로 푼 코드 import math min_result = list() min_range = math.inf def solution(gems): gems_..
import re expression = re.split('([^0-9])', '100-200*300-500+20') print(expression)
programmers.co.kr/learn/courses/30/lessons/67257 코딩테스트 연습 - 수식 최대화 IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 programmers.co.kr 순열 문제이다. 사실 최대 조합이 3! 이기때문에 내장된 permutation 함수를 써도 시간초과가 안나오는거같다... 그리고 eval라는 함수가 있는데 이 함수는 문자열 식에 대해서 계산을 해주는 함수인데 알고있었지만 쓰지 않도록 하고있는데 답을보니까 써도 시간초과가 나지 않는가보다.. permutation을 백트래킹을 이용하여 구하였고 문자열 계산은 stack을 이용하..
programmers.co.kr/learn/courses/30/lessons/67256 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 백준의 20436번 문제와 비슷하다. 각 순간마다 어느 손가락으로 키패드를 누를지 정한다. list를 이용하여 가상의 키패드를 만들고 눌러아할 숫자가 나올때마다 좌표를 계산한다. def solution(numbers, hand): answer = '' keypad =..
구현, 시뮬레이션 문제이다. BFS를 이용하여 풀 수 있다. 우선 BFS를 사용하여 최단 거리에 있는 사람을 찾는다. 1. 최단거리에 있는 사람을 찾고 그 거리를 저장한다. 2. 사람을 태우고 목적지까지 다시 BFS를 이용하여 거리를 저장한다. 만약 사람이나 목적지까지 도달할 수 없으면 그즉시 종료하고 -1을 출력한다. 도달할 수 있다면 연료에서 1번을 뺏을때 음수가 나오면 종료하고 -1을 출력한다. 연료에서 1번을 뺏을때 양수면 다시 2번을 빼고 뺏을때 음수면 종료하고 -1을 출력한다. 종료가 안됐으면 연료에 2번 *2 를 더한다. 모든 사람을 태웠으면 종료하고 남은 연료를 본다. import math from collections import deque n, m, energy = map(int, in..
구현, 시뮬레이션 문제이다. 이 문제는 특정 알고리즘을 사용하는 것이 아닌 모든 경우에 대해서 완전탐색을 하면된다. 구할 수 있는 모든 경우의 경계선을 구하고 5개의 구역의 최대 인구와 최소 인구의 차를 구한다. 조건과 인덱스만 잘 확인해주면 쉽게 풀 수 있다. 이 문제는 인덱스가 1,1 ~ n, n까지다. import math n = int(input()) a = [list(map(int, input().split(' '))) for _ in range(n)] answer = math.inf def div_area(): for i in range(n): for j in range(n): x, y = i, j for d1 in range(1, n - 1): for d2 in range(1, n - 1):..
DP 또는 완탐으로 풀수 있다. 완탐으로 문제를 해결하였다. 해당 숫자의 int(제곱근)부터 해당 숫자 - int(제곱근)^2 의 제곱근-1까지 반복문을 돌려서 확인하였다. 사실 그냥 해당 숫자의 int(제곱근)부터 0까지 돌려도 풀린다. import math n = int(input()) answer = 4 def solve(): global answer, n sqrt = int(math.sqrt(n)) for i in range(sqrt, int(math.sqrt(n - sqrt ** 2)) - 1, -1): n -= i ** 2 if n == 0: answer = min(1, answer) sqrt2 = int(math.sqrt(n)) for j in range(sqrt2, int(math.sqrt..
수빈이가 다음 장소로 갈 경우는 3가지이다. x-1, x+1, 2x 하지만 x-1, x+1 의 경우는 시간이 1초가 걸리고 2x 는 0초가 걸린다. 즉 다익스트라 알고리즘을 사용하여 문제를 풀 수 있다. ( 각 경우로 갈 시간이 같다면 Bfs로 풀 수 있다. ) import heapq import math n, k = map(int, input().split(' ')) dist = [math.inf] * 100001 dx = [-1, 1, 2] p_queue = list() def dijkstra(start): dist[start] = 0 heapq.heappush(p_queue, (dist[start], start)) while p_queue: pop_dist, pop_vertex = heapq.hea..