코딩테스트46 HEAPQ 1. 선언2. heap 사용(생성) heap을 list로 생성heapq.heappush(heap,넣을값) 3. heapq pop heappop(heap) (heapqlibrary는, heap이라는 객체에 얹어가는 형태) heapq란? heap을 자료구조 시간에 배웠다.heap은 부모가 자식보다 낫다는 것이고, 가장 위에 있는것은 항상 낮은 값! (오름차순정렬신 -value로 넣으면 된다) 하나씩 pop하고, 다음 pop시 다음 낮은 값이 자동으로 올라오고... 이런 구조이다. 2024. 5. 23. 백트래킹 모든 경우의 수를 확인해야 할때. 하지만, FOR로는 확인이 불가능 할 때 사용한다EX) FOR문의 수를 몇번 써야할지가 , M,N과 같은 변수로 들어올 때(변수 일때) 사용한다. 백 트래킹의 구조를 생각해보자. 1. 재귀 함수로 확인 2. 재귀를 벗어나는 조건 IF NUM == N : BREAK (def rec (num): 일때, if num == N : break와 같은 형태로 주로 사용한다)3. 아닐때 FOR(~~ -> 재귀) 핵심! 이 check 과정에서, 방문 여부를 확인해야한다. 시간 복잡도 확인 방법중복이 가능할때는 N(선택할 수 있는 수) ^ M (깊이)중복이 불가능할때는 N! (알고리즘때 들었던 내용을 기억하자) 방문 여부를 확인하는 자료구조, 입력을 받는 자료구조가 필요하다.++ .. 2024. 5. 17. 조합. 문제 풀이 팁 백준 15686 from itertools import combinations import sys N,M = map(int,sys.stdin.readline().split()) graph = [] for i in range(N): graph.append(list(map(int,sys.stdin.readline().split()))) house = [] chicken = [] for i in range(N): for j in range(N): if graph[i][j] == 1 : house.append([i,j]) elif graph[i][j]==2: chicken.append([i,j]) answer = N*N*N f.. 2024. 5. 10. 자바 코딩테스트 오류를 기억하자. 1. INDEX의 배열을 넘어갔다는 뜻. (idnex -1 혹은 오타를 주의하자) 2. 0으로 나눈것. 주의하자. 3. 팩토리얼 실패 30! 을 계산하다보니, INT의 범위를 넘게 되었다. 이를 어떻게 해결할까? 1. LONG으로 변경한다. 그러나 30!은, LONG만으론 택도 없이 부족했다. 2. BIGINTEGER로 변경하자. public int solution(int balls, int share) { int answer = 0; BigInteger bunza = new BigInteger("1"); BigInteger bigbunmo = new BigInteger("1"); BigInteger smallbu.. 2024. 4. 28. 파이썬에서 넘어오며 헷갈리는 문법들 1. 배열 자바엔 [:]와 같은 슬라이싱 기능이나, A[3]과 같은 기능이 없다.대신 STRING의 원소중 하나를 쓸 때는 . charAt(index)를 활용하자.<p style.. 2024. 4. 20. JAVA로 코딩테스트 언어 변경 제목과 같다. 파이썬으로 현재 프로그래머스 기준 2초반~ 정도의 난이도를 풀 수 있음에도 불구하고 변경하려는 이유는 다음과 같다. 다른것보다, 나는 지금 자바의 문법이 가장 약점이다. 프로젝트를 진행하며SQLD 취.. 2024. 4. 20. SQL 3 문자열 자르기 CONCAT을 사용한다. CONCAT의 사용은 익었지만, SUBSTR이 아직 손에 익지 않았다. SUBSTR(문자열, INDEX 시작번호, 갯수)로 , 해당 문자열을 자를 수 있다. SUBSTRING의 줄임말로써, 문자열을 줄여서 새로운 문자열을 만든다. DATE_Format 내가 자주 하는 실수 . YYYY-MM-DD로 표현하려고. DATE_FORMAT에 'YYYY-MM-DD'를 적곤 한다. %로써 표현함을 까먹지 말자. 2024. 4. 16. 고난이도 구현 문제 import math def solution(fees, records): timeleft = {} for i in records: time,carnum,state = i.split() if carnum not in timeleft.keys() : timeleft[carnum] = fees[0]#기본 주차 가능 시간 parkinglot = [] timeremember = {} for i in records: time,carnum,state = i.split() realtime = int(time[0:2])*60 + int(time[3:]) if state == "IN" : parkinglot.append(carnum) timeremember[carnum] = realtime else : #나갈때가 되었어요.. 2024. 4. 14. SQL 2 MYSQL 에서 TOP 대신 사용 하는 방법 TOP 함수를 생각했지만, 해당 함수는 SQL SERVER에서의 기능이었다.ORDER BY로 원하는 기준에 따라 정렬하고, LIMIT를 통해 그 중 몇개를 얻어낼 것인지 정한다. 재귀 쿼리 없는 데이터를 0으로 변경해야 하는 문제 . with recursive time as (select ㅁ uninall select ㅁ조건에 맞는 추가내용 where절에, 재귀의 조건을 정한다. ) 이후 left outer join을 통해, 해당 테이블과 합친다. 조건1. 넣고자 하는값, 그리고 1로 시작하는 값을 명명하여 넣는다(WHERE 또한 최초 시작 조건을)2. UNION ALL3. 해당 RECRUSIVE TABLE에서, 그 명명한 값 +1 을 재명명한다. 결과.. 2024. 3. 30. 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. 이전 1 2 3 4 5 다음