일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- execute
- 데코레이터
- 연결리스트
- 유니크제약조건
- BOJ
- 낙관적락
- 즉시로딩
- PS
- eager
- 힙
- 다대일
- 비관적락
- 백트래킹
- 이진탐색
- 스프링 폼
- dfs
- fetch
- querydsl
- JPQL
- 스토어드 프로시저
- SQL프로그래밍
- 지연로딩
- exclusive lock
- 동적sql
- 일대다
- CHECK OPTION
- 연관관계
- FetchType
- 다대다
- shared lock
- Today
- Total
목록Problem Solving (65)
흰 스타렉스에서 내가 내리지
https://www.acmicpc.net/problem/11000 Si에 시작해서 Ti에 끝나는 N개의 수업이 주어지는데, 최소의 강의실을 사용해서 모든 수업을 가능하게 해야 한다. 1. 시작 시간 기준으로 정렬한다. 2. 제일 빨리 시작하는 수업의 종료시간을 우선순위 큐에 삽입한다. -. 다음 수업시간의 시작시간이 (가장 빨리 끝나는 이미 진행된 수업의 종료시간)보다 작으면 우선순위 큐에 넣는다 -. 다음 수업시간의 시작시간이 ~~보다 더 크면 끝난 곳에 강의실을 배정하면 되니까 그냥 우선순위 큐를 팝 한다5. heapq 에 남은 시간 수가 구해야 하는 강의실 개수다. from heapq import heappush, heappopn = int(input())schedules = ..
https://www.acmicpc.net/problem/11779 from collections import defaultdictfrom heapq import heappop, heappushN = int(input())M = int(input())graph = defaultdict(list)for _ in range(M): a, b, c = map(int, input().split()) graph[a].append((b, c))start_point, end_point = map(int, input().split())distance = [1e9] * (N+1)distance[start_point] = 0q = []heappush(q, (0, start_point, [start_point]))..
면접에서 나올수도 있을까?https://www.acmicpc.net/problem/1918 알파벳이면 바로 정답에 포함여는 괄호이면 스택에 넣음닫는 괄호이면 여는 괄호가 나올때까지 스택 팝해서 여는 스택에 넣음. 이 때, 마지막으로 여는 괄호를 pop+, - 일 경우, 현재 스택에서 +,-,*,/ 를 모두 정답에 넣음*, / 일 경우, 현재 스택에서 *, / 만 정답에 넣음스택 남은거 다 정답에 넣음 expression = input()stack = []answer = ''for char in expression: if char.isalpha(): # 알파벳일 경우 바로 정답에 넣는다 answer += char elif char == '(': # 여는 괄..
https://www.acmicpc.net/problem/1865 벨만 포드 문제 근데 마지막 테케에서 시간초과왜? import sysinput = sys.stdin.readlinedef solution(): n, m, w = map(int, input().split()) edges = [] for _ in range(m): a, b, c = map(int, input().split()) edges.append((a, b, c)) edges.append((b, a, c)) for _ in range(w): a, b, c = map(int, input().split()) edges.append((a, b, -c)) ..
https://school.programmers.co.kr/learn/courses/30/lessons/77886 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr # 문자열 안에서 서브 문자열 찾기 스택을 사용하면 선형시간에 해결할 수 있다. 문자열 슬라이싱 보다는 del 명령어를 사용하면 실행시간이 현저하게 줄어든다. def solution(s): answer = [] for e in s: removed, cnt = devide(e) answer.append(get(removed, cnt)) ..
https://school.programmers.co.kr/learn/courses/30/lessons/62050 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 2차원 배열 각각의 칸은 그래프의 각 노드로 보고, 옆 칸으로 이동하는 것을 간선으로 본다그리고 비용 없이 이동할 수 있으니까 간선의 비용을 0 으로 생각하면 된다.이걸 왜 생각 못했냐 그리고 그래프를 따로 만들 필요도 없이, 인접한 좌표들에 대해 바로 heapq 에 넣어주면 된다. 그래서 어차피 cost 가 0 이면 answer 에는 변함이 없으니, 계속해서 ..
다음과 같은 템플릿을 따라가라. 대부분은 해결 가능할 것. def dfs(...): if ... :# 결과 도출 or 함수 종료 조건 return for ... :# 다음 탐색 노드들 if ... :# 볼 필요도 없는 얘들 제거 dfs(,,,)# 재귀 호출 # 예시 def dfs(graph, v, visited): visited[v] = True # 현재 노드를 방문 처리 print(v, end= ' ') for i in graph[v]: # 현재 노드와 연결된 다른 노드를 재귀적으로 방문 if not visited[i]: dfs(graph, i, visited) """ 정수 N을 입력받아 1부터 N 까지의 숫자 중에서 합이 10이 되는 조합을 리스트로 반환 """ def solution(N): resu..
https://school.programmers.co.kr/learn/courses/30/lessons/67259# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 다익스트라 문제인데, 직전시점에서, 한 지점에 도달하는 경우가 n가지라면, distance 배열을 n차원 배열로 만들어라 # https://school.programmers.co.kr/learn/courses/30/lessons/67259# import heapq from collections import defaultdict dx = [1, -1, 0, 0] dy = [0, 0, 1, -1] ..
https://school.programmers.co.kr/learn/courses/30/lessons/42576 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다.completion의 길이는 participant의 길이보다 1 작습니다.참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다.참가자 중에는 동명이인이 있을 수..
https://www.acmicpc.net/problem/9935 주어질 문자열의 길이를 N, 폭발 문자열의 길이를 M이라고 하자. 가장 먼저 무식하게 하는 방법은 아래와 같다. # 1. 무식한 방법 string = input() s = input() length = len(s) while True: if s in string: index = string.index(s) string = string[:index] + string[index+length:] else: break print(string if string else "FLURA") python에서 문자열 슬라이싱의 시간 복잡도는 O(K) where K is length of the slice. 이라는 코드는,..