분류 전체보기
프로그래머스 SQL 고득점 kit Goup by 가격대 별 상품 개수 구하기 TRUNC 사용.
PRICE 를 TRUNC 함수를 이용하여 같은 형태로 만들어준다. 10000 -> 1 15000 -> 1 오라클에서 소수점을 절사(버림)하거나 날짜의 시간을 절사 하기 위해서는 TRUNC 함수를 사용한다. SELECT TRUNC(PRICE,-4) AS PRICE_GROUP,count(*) as PRODUCTS FROM PRODUCT group by TRUNC(PRICE,-4) order by PRICE_GROUP https://school.programmers.co.kr/learn/courses/30/lessons/131530 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. program..
프로그래머스 SQL 고득점 kit Select 오프라인/온라인 판매 데이터 통합하기
UNION 을 기억하자. UNION 후 정렬이 가능 하다! select date_format(SALES_DATE, '%Y-%m-%d') as SALES_DATE ,PRODUCT_ID,USER_ID,SALES_AMOUNT from ONLINE_SALE where date_format(SALES_DATE, '%y-%m') = '22-03' union select date_format(SALES_DATE, '%Y-%m-%d') as SALES_DATE,PRODUCT_ID,null as USER_ID, SALES_AMOUNT from OFFLINE_SALE where date_format(SALES_DATE, '%y-%m') = '22-03' order by SALES_DATE,PRODUCT_ID,USER_ID
프로그래머스 코딩테스트 LV3 DFS/BFS 여행경로 자바(java) 풀이
DFS/BFS 문제의 전체적인 풀이 방식은 비슷하지만 조금씩 응용하는 단계에서 막힐 때가 있다. 이번 문제의 핵심은 모든 티켓을 써야 한다는 조건을 만족시켜야 하는 것. 위의 조건을 고려하지 않고 DFS/BFS를 사용하면 전체 티켓을 고려하지 않는 경로가 생성된다. 따라서 전체 경로를 사용했을 때만 리턴해주는 조건을 달아준다. import java.util.*; class Solution { public boolean [] visited; public ArrayList routes = new ArrayList(); // route 파라미터로 전체 경로를 저장 public void dfs(String start, String route,int count, String[][] tickets){ // 모든경로..
Coding Test _ SQL SELECT _ 데이터 포맷 변환
DATE Format 데이터 포맷 변환하기. 구분기호 역할 구분기호 역할 %Y 4자리 년도 %m 숫자 월 ( 두자리 ) %y 2자리 년도 %c 숫자 월(한자리는 한자리) %M 긴 월(영문) %d 일자 (두자리) %b 짧은 월(영문) %e 일자(한자리는 한자리) %W 긴 요일 이름(영문) %I 시간 (12시간) %a 짧은 요일 이름(영문) %H 시간(24시간) %i 분 %r hh:mm:ss AM,PM %T hh:mm:SS %S 초
프로그래머스 코딩테스트 LV3 동적계획법 정수삼각형 자바(java) 풀이
유튜브 개발자로취직하기 동적계획법 편을 보고 풀어본 문제. 완전탐색 문제인지 DP 문제인지 판단을 해야 하지만 유튜브를 통하여 DP문제임을 알고 접근하였다. 설명을 듣고 풀이방법을 알고 풀었더니 LV3 문제지만 쉽게 풀렸다. import java.util.*; class Solution { public int solution(int[][] triangle) { int answer = 0; int [][] temp = new int [500][500]; temp[0][0]=triangle[0][0]; int max =0; for(int x =0; x
프로그래머스 코딩테스트 LV2 구명보트 자바(java) 풀이
너무 어렵게 생각한 문제 Greedy를 이용할 수 있는 유형인지 확인하고 적용시키자. 사람들을 무게를 기준으로 오름차순 정렬 한 뒤 맨 앞사람과 맨 뒷사람을 같이 태우면서 무게를 초과하는지 확인하고 초과하지 않는다면 보트를 보내고, 초과한다면 맨 앞사람만 보낸다. (현재 남아있는 사람들 중 최대 무게와 최소 무게이므로) 최대 2명씩 밖에 탈 수 없기 때문에 이런 식으로 간단하게 짤 수 있었다. import java.util.*; class Solution { public int solution(int[] people, int limit) { int answer = 0; Arrays.sort(people); int index = 0; for(int i = people.length-1; i>=index; i..
프로그래머스 코딩테스트 LV2 큰 수 만들기 자바(java) 풀이
Greedy 문제에 대한 접근 방식의 다양성을 키워야겠다. 하나의 아이디어에 국한되어 다른 생각을 하지 못했다. 여러 가지의 방법을 생각해보고 가장 효과적인 것을 뽑아내도록 연습하자. Stack을 이용하여 대소비교를 한 뒤 처리를 해주었다. 대소 비교 수 만들기류의 문제에서 스택을 떠올리도록 하자. import java.util.Stack; class Solution { public String solution(String number, int k) { char[] result = new char[number.length() - k]; Stack stack = new Stack(); for (int i=0; i 0) { stack.pop(); } stack.push(c); } for (int i=0; i
프로그래머스 코딩테스트 LV2 가장 큰 수 자바(java) 풀이
문자 정렬 기준을 설정하고 변경할 수 있는지 판단하는 문제. 핵심은 두 숫자가 어떻게 배치돼야 커질 수 인지를 생각하고 정렬 기준을 어떻게 적용할 것인지이다. 정렬 기준은 위 말 그대로 두 수를 배치해보고 큰 상태 그대로 정렬을 해주면 된다. EX) 3 30 : 330 VS 303 330 > 303 이므로 3 30으로 배치하면 된다. 정렬 기준을 적용하는 방법은 Comparator를 이용하여 정렬기준을 설정해준다. Comparator를 구현할 때 항상 헷갈리는 것이 정렬 기준을 가지고 어떻게 배치될까 가 구현하면서도 헷갈린다. Arrays.sort(temp, new Comparator(){ public int compare(String a, String b){ return (b+a).compareTo(a..
프로그래머스 코딩테스트 LV1 명예의 전당 (1) 자바(java) 풀이
정렬을 쓰면 쉽게 풀리겠지만, 시간이나 메모리 측면에서 좋지 않을 것 같아서 다른 방법을 고민해봤지만 떠오르지 않아서 그냥 정렬을 이용하여 풀었다. import java.util.*; class Solution { public int[] solution(int k, int[] score) { int len =score.length; ArrayList temp = new ArrayList(); int [] answer = new int [len]; int min = 1000; for(int i=0; i
프로그래머스 코딩테스트 2019 카카오 개발자 겨울 인턴십 튜플 자바(java) 풀이
문제 핵심은 정규식을 이용해서 식을 정리하고 숫자가 등장하는 횟수를 저장하여 많이 나오는 수부터 배열에 넣어주면 해결 문제 특성이 hs의 value값이 모두 다르므로 value를 index값으로 이용하여 answer를 완성했다. import java.util.*; class Solution { public int[] solution(String s) { HashMap hs = new HashMap(); s=s.replaceAll("[\\{\\}]",""); String [] temp = s.split(","); for(String x:temp){ hs.put(x,hs.getOrDefault(x,0)+1); } int[] answer = new int[Collections.max(hs.values())];..