TIL/코딩테스트 연습문제

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

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

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

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

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


알고리즘 코드카타

아래는 정수를 담고 있는 배열 arr의 평균값을 구하는 함수 solution을 Java로 작성한 코드와 함께 블로그에 쓸 글 내용을 정리한 것입니다.


Java로 배열의 평균값 구하기

문제 설명

정수를 담고 있는 배열 arr의 평균값을 반환하는 함수 solution을 완성해보세요.

제한사항

  • arr은 길이 1 이상, 100 이하인 배열입니다.
  • arr의 원소는 -10,000 이상 10,000 이하인 정수입니다.

입출력 예

  • arr이 [1, 2, 3, 4]인 경우, 반환값은 2.5입니다.
  • arr이 [5, 5]인 경우, 반환값은 5입니다.

코드 구현

Java로 배열의 평균값을 구하기 위해서는 다음과 같은 단계를 따릅니다.

  1. 배열의 모든 원소를 더합니다.
  2. 배열의 길이로 나누어 평균값을 구합니다.

다음은 이러한 단계를 코드로 구현한 예제입니다.

public class Solution {
    public static double solution(int[] arr) {
        // 배열의 모든 원소를 더할 변수를 초기화합니다.
        int sum = 0;

        // 배열의 모든 원소를 순회하면서 더합니다.
        for (int num : arr) {
            sum += num;
        }

        // 배열의 길이로 나누어 평균값을 구하고 반환합니다.
        return (double) sum / arr.length;
    }

    public static void main(String[] args) {
        // 테스트 케이스
        int[] arr1 = {1, 2, 3, 4};
        int[] arr2 = {5, 5};

        // 결과 출력
        System.out.println(solution(arr1)); // 2.5
        System.out.println(solution(arr2)); // 5.0
    }
}

설명

1. 배열의 모든 원소 더하기

int sum = 0;
for (int num : arr) {
    sum += num;
}

위의 코드는 for-each 문을 사용하여 배열의 모든 원소를 더하는 부분입니다. sum 변수에 배열의 각 원소를 더하여 총합을 구합니다.

2. 배열의 길이로 나누어 평균값 구하기

return (double) sum / arr.length;

배열의 총합을 배열의 길이로 나누어 평균값을 구합니다. 이때, 정수형 나눗셈을 피하기 위해 sum을 double 타입으로 형변환하여 나눗셈을 수행합니다.

SQL 코드카타

주어진 문제는 동물 보호소의 데이터를 담고 있는 ANIMAL_INS 테이블에서 이름에 'el'이 포함된 개의 아이디와 이름을 조회하는 SQL 쿼리를 작성하는 것입니다. 결과는 이름 순으로 정렬되어야 하며, 대소문자를 구분하지 않습니다.

다음은 주어진 문제에 대한 SQL 쿼리와 각 부분에 대한 설명입니다.

SQL 쿼리

SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE ANIMAL_TYPE = 'Dog'
AND LOWER(NAME) LIKE '%el%'
ORDER BY NAME;

쿼리 설명

  1. SELECT 문:
    • SELECT ANIMAL_ID, NAME: ANIMAL_INS 테이블에서 ANIMAL_ID와 NAME 컬럼을 선택합니다.
  2. FROM 문:
    • FROM ANIMAL_INS: 데이터를 조회할 테이블은 ANIMAL_INS입니다.
  3. WHERE 문:
    • ANIMAL_TYPE = 'Dog': ANIMAL_TYPE이 'Dog'인 행만 선택합니다.
    • LOWER(NAME) LIKE '%el%': NAME 컬럼의 값을 소문자로 변환한 후, 'el'이 포함된 이름을 찾습니다. LIKE 연산자는 부분 문자열 매칭을 수행하며, %는 0개 이상의 임의의 문자와 매칭됩니다.
  4. ORDER BY 문:
    • ORDER BY NAME: 조회된 결과를 NAME 컬럼을 기준으로 오름차순 정렬합니다.

예시 데이터

예시 데이터는 다음과 같습니다:

ANIMAL_IDANIMAL_TYPEDATETIMEINTAKE_CONDITIONNAMESEX_UPON_INTAKE

A355753 Dog 2015-09-10 13:14:00 Normal Elijah Neutered Male
A352872 Dog 2015-07-09 17:51:00 Aged Peanutbutter Neutered Male
A353259 Dog 2016-05-08 12:57:00 Injured Bj Neutered Male
A373219 Cat 2014-07-29 11:43:00 Normal Ella Spayed Female
A382192 Dog 2015-03-13 13:14:00 Normal Maxwell 2 Intact Male

쿼리 결과

위의 쿼리를 실행하면 다음과 같은 결과가 나옵니다:

ANIMAL_IDNAME

A355753 Elijah
A382192 Maxwell 2

일일과제, Lv1. 랜덤 닉네임 생성기

package Chapter04;

import java.util.Random;

public class Practice02 {

    private String[] firstList = {"기철초풍", "멋있는", "재미있는"};
    private String[] secondList = {"도전적인", "노란색의", "바보같은"};
    private String[] thirdList = {"돌고래", "개발자", "오랑우탄"};

    public String createRandomNickname() {
        // Create a Random object
        Random random = new Random();

        // Generate random indexes for each list
        int index1 = random.nextInt(firstList.length);
        int index2 = random.nextInt(secondList.length);
        int index3 = random.nextInt(thirdList.length);

        // Create the random nickname
        String randomNickname = firstList[index1] + " " + secondList[index2] + " " + thirdList[index3];
        return randomNickname;
    }

    public static void main(String[] args) {
        Practice02 randomNicknameCreator = new Practice02();
        String myNickname = randomNicknameCreator.createRandomNickname();
        System.out.println(myNickname);
    }
}

느낀점

점점 지친다

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