TIL/코딩테스트 연습문제

[내일배움캠프] 사전캠프 코드카타 10번 문제

통촏하여주시옵소서 2024. 8. 10. 01:00

TIL 제출하기(매일 23:59 까지)
❤️‍🔥TIL : Today I Learned

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

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


알고리즘 코드카타

문제 설명

정수 배열 numbers가 주어졌을 때, 배열의 원소들의 평균값을 구하는 함수를 작성하는 문제입니다. 제한사항으로는 배열의 원소는 0 이상 1,000 이하의 정수이고, 배열의 길이는 1 이상 100 이하입니다. 또한, 결과값의 소수 부분은 .0 또는 .5인 경우만 입력으로 주어집니다.

제한사항

  • 0 ≤ numbers의 원소 ≤ 1,000
  • 1 ≤ numbers의 길이 ≤ 100
  • 정답의 소수 부분이 .0 또는 .5인 경우만 입력으로 주어집니다.

입출력 예

  • 예제 1: numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] -> 결과: 5.5
  • 예제 2: numbers = [89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] -> 결과: 94.0

입출력 예 설명

  • 예제 1: numbers의 원소들의 평균값은 5.5입니다.
  • 예제 2: numbers의 원소들의 평균값은 94.0입니다.

해결 방법

이 문제를 해결하기 위해서는 다음과 같은 단계로 접근할 수 있습니다:
1. 배열의 모든 원소를 더합니다.
2. 배열의 길이로 나누어 평균값을 구합니다.
3. 평균값을 반환합니다.

자바 코드 구현

다음은 자바로 작성한 해결 방법입니다:

public class Solution {
    public double solution(int[] numbers) {
        // 배열의 원소 합을 계산
        int sum = 0;
        for (int number : numbers) {
            sum += number;
        }

        // 배열의 길이로 합을 나누어 평균값을 계산
        double average = (double) sum / numbers.length;

        return average;
    }

    // 테스트 메소드
    public static void main(String[] args) {
        Solution sol = new Solution();

        int[] test1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        System.out.println(sol.solution(test1)); // 출력: 5.5

        int[] test2 = {89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99};
        System.out.println(sol.solution(test2)); // 출력: 94.0
    }
}

설명

  • solution 메서드는 배열 numbers를 입력으로 받아 평균값을 반환합니다.
  • 배열의 모든 원소를 더한 후, 배열의 길이로 나누어 평균값을 구합니다.
  • main 메서드에서 주어진 예제를 통해 함수의 동작을 확인할 수 있습니다.

이 코드는 주어진 입력에 대해 정확한 평균값을 계산하여 반환합니다. main 메서드에서 예제 입력을 테스트하여 올바른 결과가 출력되는지 확인할 수 있습니다.

SQL 코드카타

문제 설명

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담고 있습니다. 테이블의 구조는 다음과 같습니다:

  • ANIMAL_ID: 동물의 아이디
  • ANIMAL_TYPE: 생물 종
  • DATETIME: 보호 시작일
  • INTAKE_CONDITION: 보호 시작 시 상태
  • NAME: 이름 (nullable)
  • SEX_UPON_INTAKE: 성별 및 중성화 여부

이 문제에서는 보호소에 들어온 동물 중 "젊은 동물"의 아이디와 이름을 조회하는 SQL 문을 작성해야 합니다. 결과는 아이디 순으로 정렬되어야 합니다.

예시

ANIMAL_INS 테이블의 예시는 다음과 같습니다:

ANIMAL_IDANIMAL_TYPEDATETIMEINTAKE_CONDITIONNAMESEX_UPON_INTAKE

A365172 Dog 2014-08-26 12:53:00 Normal Diablo Neutered Male
A367012 Dog 2015-09-16 09:06:00 Sick Miller Neutered Male
A365302 Dog 2017-01-08 16:34:00 Aged Minnie Spayed Female
A381217 Dog 2017-07-08 09:41:00 Sick Cherokee Neutered Male

이 중 "젊은 동물"의 INTAKE_CONDITION은 Normal, Sick 등이고, Aged는 포함되지 않습니다. 따라서, 젊은 동물은 Diablo, Miller, Cherokee입니다.

SQL 문 작성

주어진 조건에 맞는 SQL 문은 다음과 같습니다:

SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION != 'Aged'
ORDER BY ANIMAL_ID;

설명

  1. SELECT ANIMAL_ID, NAME: 동물의 아이디와 이름을 선택합니다.
  2. FROM ANIMAL_INS: ANIMAL_INS 테이블에서 데이터를 가져옵니다.
  3. WHERE INTAKE_CONDITION != 'Aged': 보호 시작 시 상태가 'Aged'가 아닌 동물들을 필터링합니다.
  4. ORDER BY ANIMAL_ID: 결과를 아이디 순으로 정렬합니다.

이 쿼리를 실행하면 주어진 예시 데이터에 대해 다음과 같은 결과가 나옵니다:

ANIMAL_IDNAME

A365172 Diablo
A367012 Miller
A381217 Cherokee

이와 같이, 보호소에 들어온 젊은 동물들의 아이디와 이름을 아이디 순으로 조회할 수 있습니다.

느낀점

음 프젝 주제 정하기도 어렵네 부캠 들어가서도 힘들려나?

[8일차] 알고리즘 코드카타 08.05(월)_SQL이랑 언어알고리즘을 같이 담아서 썻다