어디까지 갈 수 있을까?
JOIN SELECT a.ANIMAL_ID, a.NAME from animal_ins a join animal_outs b on a.animal_id=b.animal_id where a.datetime>b.datetime order by a.datetime; join 자리에 left join, right join 들어갈 수 있음 NOT IN SELECT NAME, DATETIME from ANIMAL_INS where animal_id not in (SELECT animal_id from ANIMAL_OUTS) order by datetime limit 3; not in, limit 3(정렬된 그룹에서 위에 3개 뽑음) 생각 IF SELECT ANIMAL_ID, NAME, if(sex_upon_intak..
문제링크 programmers.co.kr/learn/courses/30/lessons/77485 [답코드] def solution(rows, columns, queries): answer = [] graph = [[] for _ in range(rows)] value = 1 for i in range(rows): for j in range(columns): graph[i].append(value) value += 1 for x1, y1, x2, y2 in queries: x1, y1, x2, y2 = x1-1, y1-1, x2-1, y2-1 tmp = graph[x1][y1] min_v = tmp for x in range(x1, x2): graph[x][y1] = graph[x + 1][y1] min_..
문제링크 programmers.co.kr/learn/courses/30/lessons/60059 [답코드] import copy def rotate(key): copy_key=copy.deepcopy(key) for i in range(len(key)): for j in range(len(key)): copy_key[j][-i-1]=key[i][j] return copy_key def check(n, m, copy_lock): for i in range(m, n+m): for j in range(m, n+m): if copy_lock[i][j]!=1: return False return True def add(i, j, copy_lock, key): for k in range(len(key)): for ..
문제링크 programmers.co.kr/learn/courses/30/lessons/72410 처음에는 함수 여러개를 만들어서 다 비교하다가 정규표현식으로 풀면 깔끔하길래 풀어봤다 [답코드] import re def solution(new_id): st=new_id st=st.lower() st=re.sub('[^a-z0-9-_.]','',st) st = re.sub('[.]+', '.', st) st = re.sub('^[.]|[.]$', '', st) if len(st)==0: st = 'a' else: st=st[0:15] st = re.sub('^[.]|[.]$', '', st) if len(st)
지금까지의 서비스는 새로운 Jar가 실행되기 전까진 기존 Jar를 종료시켜 놓기 때문에 서비스가 중단된다. 이를 해결하기 위해 우리는 엔진엑스를 이용해 '무중단 배포' 를 해볼 것이다 엔진엑스의 기능 중 리버스 프록시는 외부의 요청을 받아 백엔드 서버로 요청을 전달하는 행위를 말한다 무중단 배포의 운영과정을 요약하자면, 일단 포트를 두 개 둔다. 예를 들어 현재 엔진엑스가 8081포트와 연결돼있으면 8082 포트에서 신규 배포 진행 후 엔진엑스가 바라보는 포트를 8082 포트로 바꾸고, 또 신규 배포가 필요하면 8081 포트에서 신규 배포 진행 후 엔진엑스가 바라보는 포트는 8081로 바꾸면 된다. 사용자는 엔진엑스가 바라보는 포트의 프로그램을 사용하게 된다 엔진엑스 설치와 스프링 부트 연동하기 EC2 ..
중복 관련 set(튜플) 값 바로 접근 할 때 dictionary 같은 열 요소 묶음 zip 원소 삽입/삭제 시 deque 최솟값, 최댓값 heapq 값이 있는지 확인 시 in 비슷한 유형끼리 묶고 싶으면 sort #요소마다 숫자가 작은 순서로, 길이가 짧은 순서로 정렬된다 길이가 안 맞으면 % 최소값 BFS 인덱스 값 찾기 index dp는 dp배열에 들어갈 값 먼저 정해놓고 시작하기 연속된 길이 투포인터 알고리즘 deque from collections import deque q=deque() q.append(값) #가장 오른쪽에 append q.pop() #가장 오른쪽 값 pop q.popleft() q.remove(값) heapq from heapq import heappush, heappop, ..
내가 부족한 것 - 입력수보고 알고리즘 유추하기 - 최고가 아니라도 내가 할 수 있는 최선으로 - in & not in 잘 쓰기 - 문제의 기초 정의에 입각해 푸는 것 - 부분적으로 쪼개서 생각하는 것 - 시간 복잡도를 낮추기 위해 메모리를 더 쓰기 - 최단거리 -bfs(가중치 동일), 다익스트라(가중치 다름) - 가지치기 dfs - 오래 걸리면 아이디어만 주석으로 달아놓고 넘어가기 DFS - 종료조건 - 반복문을 간결하게 표현(반복문으로 될 것 같은데 인자값이 계속 변할 때) - 트리로 이해하기 - depth=재귀함수 call하는 횟수 - 방향 없이 쭉 이어지는 느낌 DP - 처음 : 다 만들어 볼까? -> 너무 많으면 DP -영향을 주는 요인 갯수에따라 배열 차원을 나눈다 -현재 값과 현재값의 이후면..
a='aa' print(a[0:3] + '|') print(a[3:5] + '|') print('|') 해당 코드를 돌릴 경우 에러가 날까? 답은 '에러가 나지 않는다' 이다 배열 a는 끝 인덱스가 1 임에도 불구하고, a[0:3]을 부르면 aa까지만 출력되고 a[3:5]를 부르면 아무것도 출력되지 않는다 그러므로 위의 코드의 전체적인 출력값은 aa| | | 이 된다. 관련된 stackoverflow의 답변에서는 stackoverflow.com/questions/9490058/why-does-substring-slicing-with-index-out-of-range-work Why does substring slicing with index out of range work? Why doesn't 'exa..