본문 바로가기

분류 전체보기202

HASH 프로그래머스 - 완주하지 못한 사람 찾기 이와 같은 형태로, DICTIONARY의 키는 값중 HASH한 값을 넣고, SUMHASH에서 완주자들의 값 중 HASH를 제거하여 이를 후에 다시 찾는 형태로 구현하였다. DICTIONARY + HASH로 KEY를 만드는 형태를 잘 기억하자. ++ DICTIONARY 선언 이후, DICT[I]는 해당 KEY의 INDEX와 같은 역할을 함을 기억하자. list, dict등을 가져오는 방법. 파이썬도 c++ 이나 java처럼, 해당 list와 dict의 메모리를 참조한다. 그러므로 값을 받아와야한다. list_copy = lista.copy(), dict시는, dicta.values()로 값만 꺼낼 수 있다. list연산이 느리다면? SET , APPEND를 활용하자.. 2024. 3. 17.
SQL SQL을 풀면서 사용했던 팁들을 정리하자. 1. DATE_FORMAT(원하는컬럼, "%Y-%M-%D") DATE의 FORAMT이 시간이나 년도까지 나와있다면, 이를 간단하게 년도,달,일로 변경하여 준다. 2. MONTH(DATE컬럼), YEAR(DATE컬럼) DAY도 있다. 해당 컬럼의 달과 년 값을 비교할때 사용한다. 3. 모든 쿼리 이후 결합은 UNION ALL을 사용하자. JOIN은 쿼리 이후 결합으로 보기는 힘들다. 이를 조심하자. 서브쿼리 서브쿼리 시 주의 할 점 1. HAVING에서 집계함수 사용시, SELECT에서 묶인 후에 각 행마다 다른 속성을 사용할 수 없다. 2. 서브쿼리는 WHERE절에서 = 로 비교시 1개의 COLUMN밖에 비교할 수 없다. 2개이상을 원할때는, IN을 사용하자. .. 2024. 3. 13.
프로그래머스로 풀이 사이트 변경 기존, 각 문제별 풀이를 진행하기 위해 백준에서 코딩테스트를 진행하였는데, 이제 조만간 찾아오게 될 실전 코딩 테스트를 위해 , 이 환경을 변경하였다. 이로 인한 주의사항을 정리하자 1. input을 넣을 필요가 없다. 기존 백준에선 직접 input을 넣어주어야 했는데, 프로그래머스에서는 이가 주어졌다. 그러므로 input을 넣을 필요가 없고, sys를 import 하여 시간을 단축시키는 tip을 사용할 수 없게 되었다. 2. print도 할 필요가 없다. def solution안에 있는 return의 값으로만 출력이 정해지므로, 따로 출력을 진행할 필요가 없다. 3. DFS,BFS시 GLOBAL보단 모든 내용을 매개변수로 받는것이 좋아졌다. import sys sys.setrecursionlimit(1.. 2024. 3. 13.
BFS/DFS 다시.. 백준 6118 결국 돌아왔다.. BFS로. import sys from collections import deque N,M = map(int,sys.stdin.readline().split()) graph = [ [] for _ in range(N+1) ] for i in range(M) : a,b= map(int,sys.stdin.readline().split()) graph[a].append(b) graph[b].append(a) #간곳이면 0 처리 visited = [0] * (N+1) def BFS(x): q= deque() q.append(x) visited[x] = 1 while q: comefrom = q.popleft() for i in graph[comefrom]: if visited[i.. 2024. 3. 6.
겨울방학에 무엇을 했나 1. SPRING 공부 패스트캠퍼스의 150시간 분량 강의로, SPRING과 자바에 대한 공부를 진행하였다. 열심히 진행하였음에도 수업이었기 때문에 성취가 없었지만, 차후 설명할 프로젝트 과정에서 도움이 많이 되었다. 2. CLOUD 관련 (K8S 공부) 졸업작품에 맞추어, 교수님의 강의와 더불어 해당 내용의 부족한점을 강의를 구매하여 학습하였다. K8S는, 졸업작품에서 사용하기로 확정이 났기 때문에, 학습이 필수적이었다. 허나, 틈날때마다 복습이 필요하다. ++토익스피킹 정보처리기사 실기까지 시간이 좀 남아, 토익스피킹을 빠르게 준비하고 있다. 높은 수준의 성취를 목표로 하진 않지만, 목표로 하는 점수를 얻고자 노력중이다. --성취를 얻은 것들 -- 3.삼성생명 금융연수 금융권 IT 인력을 꿈꾸기 떄문.. 2024. 3. 3.
TREE 관련 문제 먼저, BINARY TREE에 대한 개념을 잡고 가자. 비선형의 자료구조로써. ROOT -> 단말노드 등의 구조를 가진다. 왼쪽의 값보다는 부모의 값이 크고, 오른쪽보단 부모의 값이 작다. 자료구조의 형태는 이해했으나, 이를 어떻게 활용하는지, import heapq, heapq.heappush(array,50)혹은 heappop처럼 활용하는지 보도록 하자! 백준 11725 import sys sys.setrecursionlimit(1000000) N = int(sys.stdin.readline()) Nlist =[[] for _ in range(N+1)] for i in range(N-1): a,b=list(map(int,sys.stdin.readline().split())) Nlist[a].appen.. 2024. 3. 3.
결제 과정 완료 기존, 결제를 원하는 상품을 즉시 구매하는 형태로 구현하려 하였으나, 기술이 아닌 정책상의 문제(개인 사업자 만이 사용 가능, 사용자의 카드정보를 개인이 보유 금지)로. 이를 해결할 방안을 찾게 되었다. 해당 과정을 진행하며 주의했던 점 1. 결제 검증 결제 자체는 open api호출 만으로 쉽게 진행할 수 있다.( 앞서 상기한 정책상 이유로, test channel만 가능) 하지만 증권사 시스템을 분석하며, 결제 등의 프로세스에서 가장 중요한 것은 검증이라는 생각을 했다. front단이 전송한 결제 정보가, 사실과 다를 수도 있다는 가정을 하며 검증을 진행하였다. 2. front, backend 단의 분리 사용자의 카드 정보를 backend 단에서 보유할 수 없다. 이러한 이유로 front 단에서 어쩔.. 2024. 2. 27.
dp - 심화 2 백준 1793 import sys dp = [ 0 for _ in range(251)] dp[0] = 1 dp[1] = 1 dp[2] = 3 for i in range(3,251) : dp[i] = dp[i-1] + (dp[i-2]*2) while(True) : try : N= int(sys.stdin.readline()) print(dp[N]) except: break 2*N을 채우는 방법은, dp[i-1] (전 거를 채우는 방법 + 세로로 한줄) + dp[i-2]*2(3개가 아니라 2개인 이유는, 다 세로인 경우는 앞에 포함된다. 로 쉽게 풀었다. 자꾸 java와 혼동하여 try catch로 하는데, try : except:임을 기억하자. 백준 1003 import sys dp = [0] * 41 d.. 2024. 2. 27.
큐 (심화편) 백준 11279 import sys N = int(sys.stdin.readline()) answerqueue = [] for i in range(N) : comein = int(sys.stdin.readline()) if comein == 0 : if len(answerqueue) == 0 : print(0) else: answerqueue.sort() print(answerqueue.pop()) else : answerqueue.append(comein) Queue를, list를 활용해서 구현하였다. 다만 이때 시간 복잡도가 N*O(NLOGN)으로써 , 1000000000000정도가 된다. (N제약이 100000) 즉, 정렬을 따로 하지 않고도, 최대나 최소를 얻어낼 수 있는 자료구조를 사용하는 것이.. 2024. 2. 26.
프로젝트 TEST public void SavePaymentInfo(String paymentid, String status, String paytime, String ordername, int totalamount) { OffsetDateTime offsetDateTime = OffsetDateTime.parse(paytime); Timestamp requestedAtTimestamp = Timestamp.from(offsetDateTime.toInstant()); Payment payment = new Payment( paymentid,status,requestedAtTimestamp,ordername,totalamount ) ; paymentRepository.save(payment) ; } 해당 내용을 TEST 하.. 2024. 2. 25.