일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- List.of
- 코딩테스트
- OOP
- MySQL
- 프로그래머스
- 버블정렬
- vm인스턴스생성
- 코드스테이츠
- 재귀와반복문
- java
- 구간합구하기
- 알고리즘
- 백준
- 성능테스트툴
- 백준 11659
- 클라우드에서 도커 실행하기
- 싱글톤패턴
- 인텔리제이
- Array.asList
- 스택
- 투포인터알고리즘
- GCP
- Spring Web MVC
- Spring MVC 동작원리
- String.valueOf()
- 자바
- Spring MVC 구성요소
- 11659
- 코드스테이츠 백엔드
- 재귀함수
- Today
- Total
목록Problem Solving (149)
순간을 기록으로
문제 풀이 2019-07-27을 끝으로 한달동안 일별로 active한 사용자의 수를 조회하는 문제입니다. 다양한 방법이 있지만 DATE_SUB을 이용하여 문제를 풀었습니다. 1 2 3 4 5 select activity_date as day, count(distinct user_id) as active_users from activity group by activity_date having activity_date > date_sub('2019-07-27', interval 30 day) and activity_date
문제 풀이 어제보다 기온이 높으면 해당 날짜의 id를 조회하는 문제입니다. 오늘 기온 > 어제 기온인 데이터를 찾으면 됩니다. 어제 데이터와 오늘 데이터를 나란히 비교하기 위해 조인을 사용해야 합니다. MySQL에서는 날짜 연산 함수로 DATE_ADD, DATE_DIFF 등의 연산자가 있습니다. 1 2 3 4 5 select a.id from weather a join weather b on a.recordDate = date_add(b.recorddate, interval 1 day) where a.temperature > b.temperature; cs
문제 https://school.programmers.co.kr/learn/courses/30/lessons/131114 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 경기도에 있는 식품창고 목록을 출력하는 문제. 처리해야 되는 일은 총 2가지다. - 전국에 있는 식품창고 중 경기도에 있는 것만 조회하기 --> 문자열로 이뤄진 주소는 LIKE '%경기도%'와 같이 작성하여 경기도에 있는 식품창고를 찾을 수 있다. LIKE 연산자는 문자열에서 특정 문자를 검색할 때 사용한다. %는 임의의 문자열을 의미한다. - 냉동시설 여부가 만약 NULL이라면 'N..
문제 https://leetcode.com/problems/combine-two-tables/ Combine Two Tables - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 두 테이블을 결합(combine)해서 조회하는 문제. 풀이 Address 테이블에 personId 외래키가 있기 때문에 Join 연산을 사용하여 두 테이블을 합칠 수 있다. 결과를 보면 주소가 없는 회원들도 조회하기 때문에 left join을 해야된다. 1 2 3 4 select p.f..
문제 풀이 최솟값을 구하기 위해서는 가능한 큰 수를 빼야한다는 점을 알고 있는게 포인트였던 문제 더하기로 연결된 피연산자들을 모두 먼저 더한 결과값을 -로 빼주면 최솟값이 된다. 예를들어 100 - 40 + 50 + 74 - 30 + 29 -45 + 43 + 11 이라는 배열이 있다고 가정한다면 100 - (40 + 50 + 74) - (30 + 29) -(45 + 43 + 11) 와 같이 괄호를 쳐야 최솟값이 될 것이다. 괄호란 먼저 연산을 한다는 의미니깐 먼저 합을 계산한 뒤 마지막에 첫 번째 값을 제외한 나머지 값만 빼주면 된다. 크게 보자면 첫 번째로 '-'을 구분자로 하여 문자열을 구분한 다음에 반복을한다 두번째로 현재 문자열을 또 다시 '+'로 나누어 모두 더한 뒤 첫 번째 요소만 더하고 나머..
문제 풀이 수열이 주어졌을 때 두 수를 묶거나 또는 묶지 않아서 최댓값을 구해야 한다. 기본적으로 우리가 알고 있는 지식을 이용해서 문제를 풀어야한다. 숫자의 특성에 따라 수를 분리하면 1보다 큰 양수, 1, 0, 음수 총 4가지로 나눌 수 있다. 1보다 큰 양수일 경우 더하는 것보다 곱하는 것이 더 큰 값을 만든다. 또한 여러 양수가 있을 때 가장 큰 두 수를 곱하는 것이 최댓값을 준다. 음수일 경우 더하는 것보다 곱하여 부호를 양수로 만드는 것이 더 큰값을 만든다. 또한 가장 작은 두 수를 곱해야 최댓값을 만들 수 있다. 만약 음수가 1개 남는다면 0이 있는지 확인한다 만약 0이 있다면 두 수를 곱하는 것이 더하는 것보다 최댓값 만드는 것에 도움이 된다. 마지막으로 남은 1의 갯수만큼 결과에 더해준다..
문제 Tree 테이블을 이용해서 Output 테이블처럼 루트 노트면 'Root', Inner 노드면 'Inner', 잎노드이면 'Leaf'을 값으로 갖는 테이블을 만들어야하는 문제. 처음엔 못풀었다가 솔루션을 보고 풀었다. id와 p_id 관계를 이용해서 문제를 풀 수 있다. 만약 루트 노드는 부모 노드가 없으므로 p_id가 null이면 루트 노드다. 그리고 id 값에 해당하는 p_id가 있으면 해당 노드는 Inner 노드다. 그 외에는 모두 Leaf 노드에 해당한다. 풀이 1 2 3 4 5 6 7 8 SELECT id, CASE WHEN p_id is null then 'Root' WHEN id in (select p_id from tree) then 'Inner' else 'Leaf' END AS '..
문제 풀이 이 문제에서는 이름이 없거나 봉급이 없는 직원의 employee_id를 조회해야 하므로 AUB 에서 교집합을 제외한 데이터를 찾는 문제다. 참고로 Oracle에서는 full join을 지원하지만 MYSQL에서는 Full Join을 지원하지 않기 때문에 LEFT JOIN과 UNION을 이용해서 문제를 풀어야 한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 SELECT e.employee_id FROM Employees e LEFT JOIN Salaries s ON e.employee_id = s.employee_id where salary is null UNION SELECT s.employee_id FROM Salaries s LEFT JOIN Employees e ON s...