TIL/코딩테스트 연습문제

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

통촏하여주시옵소서 2024. 9. 12. 06:52

TIL 제출하기 (2024-09-11)
오늘의 공부를 마무리하면서 작성한 내용입니다.

알고리즘 문제를 풀어보겠습니다. 문제의 조건에 따라 n은 10억 이하의 자연수이며, 각 자리 숫자를 배열로 변환하여 뒤집어 반환하는 것이 목표입니다. 예를 들어, n이 12345라면, 출력 결과는 [5, 4, 3, 2, 1]이어야 합니다.

알고리즘 문제

이 문제를 풀기 위해서는 다음과 같은 순서로 접근할 수 있습니다:

  1. 자연수를 문자열로 변환: 주어진 자연수를 각 자리별로 분리하기 위해 문자열로 변환합니다.
  2. 각 자리 숫자를 역순으로 배열에 담기: 문자열을 뒤집고, 각 문자를 다시 숫자로 변환하여 배열에 담습니다.
  3. 결과 반환: 배열을 반환합니다.

Java 코드 구현

import java.util.*;

public class Solution{

    public static int[] solution(long n) {
        // 1. 자연수를 문자열로 변환
        String str = Long.toString(n);

        // 2. 문자열을 역순으로 배열에 담기
        int[] result = new int[str.length()];
        for (int i = 0; i < str.length(); i++) {
            // 문자를 숫자로 변환 후 배열에 담음
            result[i] = str.charAt(str.length() - 1 - i) - '0';
        }

        return result;
    }

    public static void main(String[] args) {
        long n = 12345;
        System.out.println(Arrays.toString(solution(n))); // 출력: [5, 4, 3, 2, 1]
    }
}

코드 설명

  1. solution 함수:
    • 입력으로 자연수 n을 받습니다. 이 값을 Long.toString(n)을 이용해 문자열로 변환합니다.
    • 그다음, 문자열의 길이만큼 배열을 생성하고, 각 자리 숫자를 뒤에서부터 순서대로 배열에 저장합니다.
    • charAt()을 사용해 각 문자를 가져온 후, 이를 숫자로 변환하기 위해 '0'을 빼줍니다. 이는 ASCII 값 변환을 위한 간단한 방법입니다.
  2. main 함수:
    • 자연수 12345를 입력으로 받아 solution 함수로 넘긴 후, 결과 배열을 출력합니다.

실행 결과

코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다:

[5, 4, 3, 2, 1]

SQL 쿼리

문제 설명

다음은 식품공장의 정보를 담은 FOOD_FACTORY 테이블입니다. FOOD_FACTORY 테이블은 다음과 같은 구조를 가지고 있습니다:

Column name Type Nullable
FACTORY_ID VARCHAR(10) FALSE
FACTORY_NAME VARCHAR(50) FALSE
ADDRESS VARCHAR(100) FALSE
TLNO VARCHAR(20) TRUE

각 열의 의미는 다음과 같습니다:

  • FACTORY_ID: 공장 ID
  • FACTORY_NAME: 공장 이름
  • ADDRESS: 공장 주소
  • TLNO: 전화번호

문제

FOOD_FACTORY 테이블에서 강원도에 위치한 식품공장의 공장 ID, 공장 이름, 주소를 조회하는 SQL문을 작성해주세요. 이때 결과는 공장 ID를 기준으로 오름차순 정렬해주세요.

예시

FOOD_FACTORY 테이블이 다음과 같을 때:

FACTORY_ID FACTORY_NAME ADDRESS TLNO
FT19980003 (주)맛있는라면 강원도 정선군 남면 칠현로 679 033-431-3122
FT19980004 (주)맛있는기름 경기도 평택시 포승읍 포승공단순환로 245 031-651-2410
FT20010001 (주)맛있는소스 경상북도 구미시 1공단로7길 58-11 054-231-2121
FT20010002 (주)맛있는통조림 전라남도 영암군 미암면 곤미현로 1336 061-341-5210
FT20100001 (주)맛있는차 전라남도 장성군 서삼면 장산리 233-1번지 061-661-1420
FT20100002 (주)맛있는김치 충청남도 아산시 탕정면 탕정면로 485 041-241-5421
FT20100003 (주)맛있는음료 강원도 원주시 문막읍 문막공단길 154 033-232-7630
FT20100004 (주)맛있는국 강원도 평창군 봉평면 진조길 227-35 033-323-6640
FT20110001 (주)맛있는밥 경기도 화성시 팔탄면 가재리 34번지 031-661-1532
FT20110002 (주)맛있는과자 광주광역시 북구 하서로 222 062-211-7759

SQL 쿼리

다음 SQL 쿼리를 사용하여 문제를 해결할 수 있습니다:

SELECT 
    FACTORY_ID, 
    FACTORY_NAME, 
    ADDRESS
FROM 
    FOOD_FACTORY
WHERE 
    ADDRESS LIKE '강원도%'
ORDER BY 
    FACTORY_ID ASC;

실행 결과 예시

위 SQL 쿼리를 실행하면 다음과 같은 결과가 출력됩니다:

FACTORY_ID FACTORY_NAME ADDRESS
FT19980003 (주)맛있는라면 강원도 정선군 남면 칠현로 679
FT20100003 (주)맛있는음료 강원도 원주시 문막읍 문막공단길 154
FT20100004 (주)맛있는국 강원도 평창군 봉평면 진조길 227-35
TIL 제출하기(매일 23:59 까지)
❤️‍🔥TIL : Today I Learned

매일 저녁, 공부를 마무리하면서 제출해주세요.
하루에 1%씩만 나아가도 4개월 동안 쌓이면 꽤 덩치가 커진답니다 :)

[TIL을 쓰는 이유]
1. 스스로 어제보다 한 발 더 나아갔다는 것을 자각하기
2. TIL을 쓰기 위해서라도, 오늘 반드시 단 하나라도 배우기
3. 꾸준히 기록을 남기는 습관 가지기