본문 바로가기

반응형

프로그래머스

(15)
코딩테스트 연습 - 해시 (완주하지 못한 선수) 1. 문제 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. *문제 원본은 '문제링크' 참고 2. 학습 내용 1) HashMap을 이용한 데이터 관리 *사용 이유: Key : Value = 이름 : 출현 빈도 형태로 연결되기 때문에 HashMap을 이용하여 문제 해결하는 방법이 효율적이라 판단 2) HashMap.getOrDefault 메소드 활용 *Key로 조회되는 데이터가 있을 경우, 키에 대한 값 반환 / 없을 경우,..
코딩테스트 고득점 Kit - 정렬 (가장 큰 수) 1. 문제 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요. *문제 원본은 '문제링크' 참고 2. 학습 내용 1) Arrays.sort를 이용한 정렬 (정렬 기준에 Comparator 사용) 2) 예외 처리 적용 (Case: 가장 큰 수가 0일 때, 0 반환) 3) StringBuilder를 사용한 문..
코딩테스트 입문 - 최빈값 구하기 1. 문제 *문제 원본은 '문제링크' 참고 2. 학습 내용 1) HashMap 사용한 데이터 저장 및 조회 🔎 3. 작성 코드 import java.util.HashMap; import java.util.Map; class Solution { public int solution(int[] array) { Map frequencyMap = new HashMap(); // 키, 값 특징 이용하기 위해 HashMap 사용 int maxFrequency = 0; // 최빈값 int multiFrequency = -1; // 최빈값 2개 이상일 경우 반환값 for (int num : array) { // array 반복 순회 int frequency = frequencyMap.getOrDefault(num, 0)..
SQL - 자동차 대여 기록 별 대여 금액 구하기_String, Date 1. 문제 *문제 원본은 '문제링크' 참고 2. 학습 내용 1) SELECT 절 내 조건부 컬럼 조회 (조건에 맞춰 FEE값 출력하는 방식으로 접근함) 2) INNER JOIN을 이용한 데이터 조회 🔎 3. 작성 코드 -- 코드를 입력하세요 SELECT b.HISTORY_ID, FLOOR(a.DAILY_FEE * (1 - (CASE WHEN DATEDIFF(b.END_DATE, b.START_DATE)+1 >= 90 THEN (SELECT DISCOUNT_RATE FROM CAR_RENTAL_COMPANY_DISCOUNT_PLAN WHERE CAR_TYPE = a.CAR_TYPE AND DURATION_TYPE = '90일 이상') / 100 WHEN DATEDIFF(b.END_DATE, b.START_..
코딩테스트 입문 - 평행 1. 문제 *문제 원본은 '문제링크' 참고 2. 문제 해석 주어진 네 개의 점을 두 개씩 이었을 때, 두 직선이 평행이 되는 경우가 있으면 1 return, 없으면 0 return *주의사항: 4개의 점을 어떠한 형태로 연결했을 때 평행 여부 검사 *최초, 아래 작성 코드에서 평행 검사 조건2 생략하여 오답처리됨 🔎 3. 작성 코드 class Solution { public int solution(int[][] dots) { // 좌표 필드로 받음 int x1 = dots[0][0]; int y1 = dots[0][1]; int x2 = dots[1][0]; int y2 = dots[1][1]; int x3 = dots[2][0]; int y3 = dots[2][1]; int x4 = dots[3][0]..
SQL - 상품을 구매한 회원 비율 구하기_JOIN 1. 문제 USER_INFO 테이블과 ONLINE_SALE 테이블에서 2021년에 가입한 전체 회원들 중 상품을 구매한 회원수와 상품을 구매한 회원의 비율(=2021년에 가입한 회원 중 상품을 구매한 회원수 / 2021년에 가입한 전체 회원 수)을 년, 월 별로 출력하는 SQL문을 작성해주세요. 상품을 구매한 회원의 비율은 소수점 두번째자리에서 반올림하고, 전체 결과는 년을 기준으로 오름차순 정렬해주시고 년이 같다면 월을 기준으로 오름차순 정렬해주세요. *문제 원본은 '문제링크' 참고 2. 학습 내용 1) SELECT절에서 조건문(CASE)을 이용한 컬럼 조회 2) LEFT JOIN 을 이용한 컬럼 조회 3) ROUND 함수를 이용한 데이터 소수점 조정 *회원의 비율 계산식은 문제에서 친절하게 제공해줌 ..
SQL - 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기_JOIN 1. 문제 CAR_RENTAL_COMPANY_CAR 테이블과 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블과 CAR_RENTAL_COMPANY_DISCOUNT_PLAN 테이블에서 자동차 종류가 '세단' 또는 'SUV' 인 자동차 중 2022년 11월 1일부터 2022년 11월 30일까지 대여 가능하고 30일간의 대여 금액이 50만원 이상 200만원 미만인 자동차에 대해서 자동차 ID, 자동차 종류, 대여 금액(컬럼명: FEE) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 대여 금액을 기준으로 내림차순 정렬하고, 대여 금액이 같은 경우 자동차 종류를 기준으로 오름차순 정렬, 자동차 종류까지 같은 경우 자동차 ID를 기준으로 내림차순 정렬해주세요. *문제 원본은 '문제링크' 참고 ..
코딩테스트 입문 - 옹알이_JAVA 1. 문제 머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요. *문제 원본은 '문제링크' 참고 2. 문제 해석 1) 4개의 keyword를 가지고 조합하여 발음 가능한 단어의 개수 카운팅 2) 문제 해결을 위한 접근 방식 아래의 2가지 방식이 떠올랐으나, 정규식 표현을 이용한 방법을 택함 (이유: 코드 단순화) (1) 발음 가능한 단어를 배열화하여, 주어진 단어를 비교한다. (2) 정규식 표현을 이용하여, 주어..

반응형