📑 1. 문제설명 💡 2. 풀이과정Set을 사용하던지 이중 for문 돌려서 풀면 된다. Set은 중복을 허용하지 않고, 검색 속도가 빠르기 때문에 비교 대상인 s1을 Set으로 변환하면 s2의 각 원소가 포함되어 있는지 빠르게 확인할 수 있다. 그리고 이중 for문 으로 풀 때는 중복 카운트 피하려면 `break;` 를 써야 한다. 👨💻 3. 정답코드Set으로 푼 코드import java.util.*;class Solution { public int solution(String[] s1, String[] s2) { Set set = new HashSet(Arrays.asList(s1)); int cnt = 0; for (String str : s2) {..

My Tech Blog (정답)
오늘의 명언
📑 1. 문제설명❌ 2. 실패한 시도없음 ⭐ 3. 정답코드-- 코드를 입력하세요SELECT i.name, i.datetimeFROM animal_ins i LEFT OUTER JOIN animal_outs o ON i.animal_id = o.animal_idWHERE o.animal_id is nullORDER BY i.datetime ascLIMIT 3;animal_ins 테이블에는 있는데 animal_outs에는 없는 동물을 찾으면 된다.그렇다면 기준테이블은 animal_ins이고, 이 테이블을 왼쪽에 놓고 LEFT OUTER JOIN을 수행한다.JOIN된 테이블에서 o.animal_id가 null인 데이터를 조회하면 animal_ins에는 있고 animal_outs에는 없는 동물들 목록이 나온다..
📑 1. 문제설명❌ 2. 실패한 시도쉬워서 바로 성공 ⭐ 3. 정답코드-- 코드를 입력하세요SELECT i.animal_id, i.nameFROM animal_ins i INNER JOIN animal_outs o ON i.animal_id = o.animal_idWHERE o.datetime SQL에서 날짜(date)는 시간적으로 오래될수록 작은 값이라는 것만 알고 있으면 쉽게 푼다.DATE_FORMAT 안해도 되고 INNER JOIN이라 쉬운 문제인데 이게 왜 lv3 이지?lv2 정도 될 거 같은데...
📑 1. 문제설명❌ 2. 실패한 시도SELECT o.animal_id, o.nameFROM animal_ins i RIGHT OUTER JOIN animal_outs o ON i.animal_id = o.animal_idWHERE o.animal_id is not null AND i.animal_id is null;ORDER BY o.animal_id; 오답정리✅ `o.animal_id IS NOT NULL` ← 불필요한 조건animal_outs o는 RIGHT OUTER JOIN에서 기준 테이블이므로 절대 NULL이 될 수 없다.따라서 이 조건은 쓸 필요가 없다.✅ RIGHT OUTER JOIN 사용 ← 동일 결과지만 덜 직관적일반적으로 OUTER JOIN 할 때는 기준 테이블을 왼쪽에 놓는다.LEF..
📑 1. 문제설명❌ 2. 실패한 시도-- 코드를 입력하세요SELECT p.PRODUCT_CODE, SUM(p.price * o.sales_amount) AS SALESFROM offline_sale o INNER JOIN product p ON o.product_id = p.product_idGROUP BY p.product_codeORDER BY sales, p.product_code ASC; 결과는 잘 출력되는데 답안 제출하면 틀렸다고 함. 처음에는 ORDER BY 절에 DESC 생략해서 그런 줄 알았는데 아님...그리고 컬럼명 대소문자 때문인가 싶어서 select절의 product_code를 PRODUCT_CODE로 고쳤는데도 틀렸습니다. ⭐ 3. 정답코드와... 오랜만에 SQL 했더니 내림차순이..
📑 1. 문제설명 💡 2. 풀이과정처음에는 3,6,9 게임을 잘못 이해했다.3의 배수일 때 박수 치는 걸로 이해해서 해당 숫자를 3으로 나눈 나머지가 0일 때 cnt ++을 하는 실수를 했다. 하지만 오리지널 369게임은 숫자 3, 6, 9가 들어가면 박수를 치는 게임이다. 즉, 숫자 하나 하나가 3 또는 6 또는 9 값을 가지면 횟수를 카운트하고 마지막에 총 횟수를 리턴한다. 주어진 숫자를 문자열로 바꿔서 각 자릿수를 탐색해도 되지만이 문제에서 어차피 숫자의 순서는 상관 없고주어진 order 안에서 3, 6, 9가 총 몇개인지 갯수면 세면 되는 문제이기 때문에주어진 숫자를 10으로 나눈 나머지가 3,6,9에 해당하는지만 확인하면 쉽게 풀 수 있다. 1. 주어진 숫자(order)를 10으로 나눈 나머..
📑 1. 문제설명💡 2. 풀이과정 n과 가장 가까운 수를 구하려면 n에서 해당 요소를 뺀 값이 제일 작아야 한다고생각했다.즉 `n - array[i]` 의 절대값이 0이거나 가장 작은 것을 구하는 접근 방식을 취했다. 처음에는 n - array[i] 이 현재 min 에 저장된 최소값보다 작으면최소값을 min에, 해당 요소의 배열 index를 answer 변수에 업데이트 하는 방식으로 풀었다.하지만 코드가 예상대로 돌아가지 않았다.import java.util.Arrays;class Solution { public int solution(int[] array, int n) { int min = Math.abs(n - array[0]); int answer =..
📑 1. 문제설명💡 2. 풀이과정배열을 오름차순 정렬한 뒤, 가장 작은 두 숫자의 합이 가장 큰 수보다 크면 1을 리턴, 아니면 2를 리턴한다. 삼항연산자로 바로 풀이 가능👨💻 3. 정답코드import java.util.Arrays;class Solution { public int solution(int[] sides) { Arrays.sort(sides); return (sides[0] + sides[1] > sides[2])? 1 : 2; }} 👏🏻 4. 좋아요 가장 많이 받은 코드그것이 곧 내 코드이다.... 쁘이ㅋㅋㅋㅋㅋ 나의 실력 일취월장 >오랜만에 잘 쓴 코드