전체 글

·코딩테스트
프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 이 문제를 풀려면 10진법을 N 진법으로, N진법을 10진법을 바꾸는 방법 에 대해서 정확하게 알고 있어야 한다. 그 기법을 정리하기에도 좋은 문제이다. 이 문제의 경우 2~9진법을 제한을 두었지만 지금은 제한이 없다고 생각해보자.그래야 각 함수가 왜 문자열을 쓰는지 이해할 수 있다. 10진법 ➡️ N진법public static String toString(int i, int radix) i 를 radix 진법으로 바꾼다. 왜 return 하는게 String 이냐면 11진법 이후로는 알파벳이 생기기 때문이다."알..
프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 이 문제에서는 NTILE, CASE 문에 대해서 알아야한다. NTILE ( N + TILE)NTILE 는 원하는 만큼의 그룹으로 기준에 따라 나눠주는 역할을 해준다. NTILE(N) OVER (내가 원하는 기준) => 내가 원하는 기준에 따라 N개의 그룹으로 나눠 줌 이것을 활용하면 NTILE(4) OVER (ORDER BY SIZE_OF_COLONY DESC) 이런식으로 적용 가능하다. CASEcase를 활용하면 조건을 활용해 새로운 열을 만들거나, 조건을 활용한 집계가 가능하다. 이 문제에서는 rank를 분류하고 숫자를 문자로 다시 저장할 때 활용했다. ..
프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제는 아직 입양가지 않은 동물중 가장 먼저 들어온 3마리를 찾는 쿼리이다. 내가 처음 작성한 코드는 다음과 같다. 이 쿼리에는 3가지 문제점이 있다. 1. NOT IN 으로 인한 성능 저하NOT IN은 서브쿼리의 모든 결과를 메모리에 로드한 뒤, 바깥쪽 테이블(ANIMAL_INS)의 모든 행과 하나씩 비교한다. 2. 서브 쿼리의 불필요한 JOINANIMAL_OUTS 만 조회하면 되는데 불필요하게 JOIN 하고 있다. 3. 불필요한 GROUP BY이건 아무리 봐도 왜 했는지 모르겠는 GROUP BY다. 삭제해야한다. (이전 문제 풀다가 습관적으로 적은듯..) ..
·코딩테스트
전형적인 DFS + DP 문제였다.DFS로 풀면 시간초과가 나와서 어디에 DP를 적용할지를 고민하는게 핵심이었다. 문제를 요약해 보면, 물건 i를 A 도둑이 훔치면 info[i][0] 개의 흔적이B 도둑이 훔치면 info[i][1] 개의 흔적이 남겨진다. 이때 모든 물건을 훔치며 1) A와 B 도둑 각각 n 과 m 이하의 흔적을 남겨 경찰에 붙잡히지 않고2) A가 남긴 흔적의 개수의 최솟값을 찾는것 즉, 각 물건을 A 도둑이 훔쳤을때, B 도둑이 훔쳤을 때는 완전 탐색하면 된다. DP는 같은 물건에 대해서 dp[i][a][b] 값을 탐색했었는지 를 검사했다. dp[i][a][b] 예를들어, 같은 물건에 대해서 훔쳤을때 dp[i][a][b] =1 이면 더이상 탐색하지 않았다. class Solution ..
·데이터베이스
두 함수는 모두 특정 기준으로 그룹화 한다는 공통이 있다. [차이점]GROUP BY는 행을 압축하고PARTITION BY는 윈도우 함수로 원본 행은 유지한다. 이게 가장 큰 차이점이라고 생각했다. (윈도우 함수는 "새로운 열을 하나 만들겠다" 는 선언과 같다.) 원본 테이블ID(직원 ID)Department(부서)Salary(급여)1Sales50002Sales60003Engineering75004Engineering85005HR4500 GROUP BY 를 했을 때 변화SELECT Department, AVG(Salary) AS Department_AverageFROM EmployeesGROUP BY Department;결과 (원본 5행 ➡️ 3행으로 압축됨)ID(직원 ID)Depar..
·코딩테스트
🔗 백준 2842 집배원 한상덕📌오늘의 학습 키워드투 포인터BFS✨공부한 내용 본인의 언어로 정리하기Input을 받으면서 P의 위치와 K의 갯수를 따로 저장해 두기고도를 set에 저장하고 정렬투포인터를 이용해 가장 작은 고도 값에서부터 늘려가기BFS로 P에서 모든 K까지 갈 수 있는 지 확인하고 갈 수 있다면 left 포인터를 땡겨오면서 가장 작은 고도 차이를 찾음BFS를 만족하지 못하면 right를 늘리면서 만족하는 것 찾기📚오늘의 회고플레문제는 대체로 2개이상의 알고리즘을 사용하게 되는 것 같다.고도관련 문제를 투포인터로 해결하는 것BFS 구현[🤓문제 해결 코드]더보기import java.io.BufferedReader;import java.io.IOException;import java.io..
·코딩테스트
🔗 백준 1719 택배 📌오늘의 학습 키워드문제에서 나 플루이드 워셜 이에요~~ 라고 티를 내고 있다.하지만 특이한 게 있다면 첫번째로 들러야 하는 지점을 저장해야한다는 것!✨공부한 내용 본인의 언어로 정리하기단순히 "이동 가능한 가장 짧은 거리를 구하시오" 했으면 쉬웠을 것이다.첫번째로 들러야 하는 지점을 찾기 위해 업데이트 하면서 DP로 어디를 지나왔는 지 추적해야했다.📚오늘의 회고첫번째 지점을 찾기 위해 지나온 점을 계속 추적해 나가는 방법을 사용했다. 테스트시 사용했던 코드는 꼭 지우자^^[🤓문제 해결 코드]더보기import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import jav..
·코딩테스트
🔗 백준 2342 Dance Dance Revolution 📌오늘의 학습 키워드DP 문제✨공부한 내용 본인의 언어로 정리하기3차원 배열에 DP를 저장해야했다.전체적인 논리는 각 단계의 이전까지의 정보를 가지고 현재 값을 업데이트하여 계속 총 비용을 계산해 나가는 것이다. 📚오늘의 회고DP에서 무엇을 저장하고 어떻게 작은 문제로 나눌 것인 지 생각하는 게 쉽지 않다...[🤓문제 해결 코드]import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { static int[] arr; static int[][][..
yolang
프로그래밍 기록장