TIL/코딩테스트 연습문제

[내일배움캠프] 본캠프 코드카타 20번 문제

통촏하여주시옵소서 2024. 10. 29. 08:12

알고리즘 문제: 자릿수를 큰 순서대로 정렬하기

이번 문제는 정수 n의 각 자릿수를 큰 순서부터 작은 순서대로 정렬하여 새로운 정수를 만드는 것입니다.

문제 분석

  1. n을 문자열로 변환해 각 자릿수를 분리합니다.
  2. 분리된 숫자들을 내림차순으로 정렬합니다.
  3. 정렬된 문자열을 다시 숫자로 변환하여 반환합니다.

제약 사항

  • n은 1 이상 8,000,000,000 이하의 자연수입니다.

코드 구현 (Java)

import java.util.Arrays;
import java.util.Collections;

public class DigitSorter {
    public long solution(long n) {
        // 1. 숫자를 문자열로 변환하고 문자 배열로 만듦
        String[] digits = String.valueOf(n).split("");

        // 2. 배열을 내림차순으로 정렬
        Arrays.sort(digits, Collections.reverseOrder());

        // 3. 정렬된 배열을 다시 하나의 문자열로 합치고 숫자로 변환
        String sortedString = String.join("", digits);
        return Long.parseLong(sortedString);
    }

    public static void main(String[] args) {
        DigitSorter sorter = new DigitSorter();
        System.out.println(sorter.solution(118372)); // 873211 출력
    }
}

코드 설명

  1. String.valueOf(n).split("")을 사용해 n의 각 자릿수를 문자열 배열로 변환합니다.
  2. Arrays.sort(digits, Collections.reverseOrder())를 사용해 배열을 내림차순으로 정렬합니다.
  3. 정렬된 배열을 문자열로 합친 후, Long.parseLong()으로 숫자로 변환하여 반환합니다.

예시 출력

  • n = 118372일 때, 출력은 873211이 됩니다.

SQL 문제: FOOD_PRODUCT 테이블에서 가장 비싼 식품 정보 조회하기

이번 문제는 FOOD_PRODUCT 테이블에서 가격이 가장 높은 식품의 정보를 조회하는 것입니다. 해당 식품의 PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE를 조건에 맞게 출력해야 합니다.

문제 분석

  1. FOOD_PRODUCT 테이블에서 가격(PRICE)이 가장 높은 식품을 조회해야 합니다.
  2. 조회해야 할 컬럼은 PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE입니다.

접근 방법

  1. MAX(PRICE)를 통해 가장 높은 가격을 찾아냅니다.
  2. WHERE 절을 사용해 PRICEMAX(PRICE)와 같은 행만 필터링합니다.

SQL 쿼리

다음은 SQL 쿼리 작성 예시입니다:

SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE
FROM FOOD_PRODUCT
WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT);

쿼리 설명

  1. MAX(PRICE)를 이용해 FOOD_PRODUCT 테이블에서 가장 높은 가격을 가져옵니다.
  2. WHERE 절을 사용해 PRICEMAX(PRICE)와 같은 행만 필터링하여 출력합니다.

예시 출력

PRODUCT_ID PRODUCT_NAME PRODUCT_CD CATEGORY PRICE
P0020 맛있는산초유 CD_OL00010 식용유 6500

위와 같은 출력이 예상되며, PRICE가 가장 높은 식품 정보가 조회됩니다.