본문 바로가기

프로그래머스45

상품 별 오프라인 매출 구하기(DB) 문제 설명 입출력 예시 요약 각 상품 별 총 판매금액 구하기 풀이 접근 방식 1. 테이블 조인 → PRODUCT_ID 기준으로 테이블 조인 2. 상품 별 매출액 구하기 → GROUP BY를 통해 상품코드(PRODUCT_CODE)별로 묶어서 SUM() 구하기 쿼리문 리뷰 -- 코드를 입력하세요 SELECT P.PRODUCT_CODE, SUM(P.PRICE * O.SALES_AMOUNT)-- 그룹화 함수 중 SUM()으로 가격 * 판매수량의 총 합을 구함 FROM PRODUCT P, OFFLINE_SALE O-- 테이블 JOIN을 위한 별칭 부여 WHERE P.PRODUCT_ID = O.PRODUCT_ID-- PRODUCT_ID 기준으로 JOIN GROUP BY P.PRODUCT_CODE-- 상품별로 묶기 .. 2024. 3. 22.
3월에 태어난 여성 회원 목록 출력하기(DB) 문제 설명 입출력 예시 요약 생일이 3월인 여성 회원의 1) 아이디 2) 이름 3) 성별 4) 생년월일 출력 풀이 접근 방식 1. 생년월일 형식 바꾸기 → TO_CHAR(DATE_OF_BIRTH, 'YYYY-MM-DD') : '년-월-일' 형태로 변경 2. 3월에 태어난 회원 구하기 → SUBSTR(DATE_OF_BIRTH, 6, 2) : YYYY-MON-DD에서 MON 가져와서 비교 * SUBSTR()의 경우 포맷 변경이 없었기 때문에 달에 해당하는 부분이 VARCHAR(JAN, FEB, MAR 등) 형태 3. 나머지 조건 맞추기 → TLNO IS NOT NULL, GENDER = 'W' 쿼리문리뷰 -- 코드를 입력하세요 SELECT MEMBER_ID, MEMBER_NAME, GENDER, TO_CHA.. 2024. 3. 22.
숫자 문자열과 영단어(Lv.1) 문제 설명 입출력 예시 요약 문자를 숫자로 바꾸기 풀이 접근 방식 1. 문자를 숫자로 바꾸기 → replaceAll() 메소드를 통해 변환 코드리뷰 import java.util.*; class Solution { public int solution(String s) { // 숫자를 문자형태로 담은 배열 만들기 String[] arr = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"}; for(int i = 0; i < arr.length; i++) { s = s.replaceAll(arr[i], String.valueOf(i));// repalceAll()을 통해 숫자로 변환 } int answ.. 2024. 3. 22.
비밀지도(Lv.1) 문제 설명 입출력 예시 요약 2진수 형태로 변환 후 합치기 풀이 접근 방식 1. 2진수 형태로 변환 → toBinaryString()을 통해 decimal to binary 변환 2. 정사각형 배열의 크기만큼 빈공간은 공백으로 채우기 → StringBuilder의 insert() 메소드를 통해 문자열에 문자 채우기 코드리뷰 import java.util.*; class Solution { public String[] solution(int n, int[] arr1, int[] arr2) { String s1 = ""; String s2 = ""; List list = new ArrayList(); for(int i = 0; i < arr1.length; i++) { s1 = Integer.toBinary.. 2024. 3. 22.
의상(Lv.2) 문제 설명 입출력 예시 요약 각 의상의 카테고리마다 하나씩 다르게 착용하는 경우의 수 구하기 풀이 접근 방식 1. 각 카테고리에 해당하는 아이템의 개수 구하기 → 카테고리(key) : 개수(value) map 만들기(아무것도 착용하지 않는 경우의 수 추가) 2. 최소 하나의 의상은 착용해야 함 → 모든 카테고리에서 아무것도 고르지 않는 경우 제외 코드리뷰 import java.util.*; class Solution { public int solution(String[][] clothes) { HashMap map = new HashMap(); for(int i = 0; i < clothes.length; i++) { map.put(clothes[i][1], map.getOrDefault(clothes[.. 2024. 3. 22.
캐시(Lv.2) 문제 설명 입출력 예시 요약 캐시에 저장된 문자열과 비교(대소문자 구분x)해서 있다면 hit 없다면 miss 방식은 LRU 풀이 접근 방식 1. 캐시 크기로 분기점 생성 → 캐시 사이즈가 0이라면 all miss 2. 캐시에 저장된 문자열과 비교 → equalsIgnoreCase()를 통해 대소문자 구분 없이 비교 3. hit의 경우(= 캐시에 존재한다면) → remove()와 add()로 LRU 방식 구현 코드리뷰 import java.util.*; class Solution { public int solution(int cacheSize, String[] cities) { List list = new ArrayList(); int answer = 0; boolean find; for(int i = 0.. 2024. 3. 22.