카테고리 없음

06/29 개인과제 발제날

tundercloud 2026. 6. 29. 20:45

오늘은 오전 : 에이타니, 코드카타 | 오후 : 머신러닝 복습 + 개인과제 발제를 하였다.

 머신러닝 복습은 월요일이라 크게 많이 하진 않았고 개인과제 발제는 링크 이슈로 문제를 아직 풀진 못했다.

 

에이타니

train validation test
train 데이터로 모델을 학습 validation 데이터로 하이퍼파라미터를 조정 test 데이터로 최종 성능을 평가함
  학습 과정 중 반복적으로 사용될 수 있음 단 한번 사용됨

→ 모델이 학습 데이터에만 과도하게 맞춰지지 ㅇ낳고 새로운 데이터에도 잘 작동하는지 확인할 수 있다.

→ 분할하는 목적 : 모델의 과적합(overfitting)을 방지하고 일반화 성능을 객관적으로 평가하기 위함

 

● 토큰

- 토큰의 개수는 AI 모델의 응답 속도와 비용에 직접적인 영향을 미친다.

- 토큰이 많을수록 처리 시간이 길어지고, 많은 AI 서비스에서 토큰 수를 기준으로 비용을 청구한다.

- 한국어는 영어보다 일반적으로 더 많은 토큰을 사용하여 동일한 의미를 표현한다.

- AI 모델은 입력과 출력을 모두 토큰으로 변환하여 처리한다.

 

● AI 언어 모델의 '온도(Temperature)' 파라미터가 0에 가까울 때 나타나는 특징

→ 예측이 가능하고 결정적인 답변을 생성하며, 동일한 질문에 거의 같은 답변을 한다.


코드카타

 

97번 모음사

사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 

사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니다.

단어 하나 word가 매개변수로 주어질 때, 이 단어가 사전에서 몇 번째 단어인지 return 하도록 solution 함수를 완성해주세요.

제한사항
● word의 길이는 1 이상 5 이하입니다.
● word는 알파벳 대문자 'A', 'E', 'I', 'O', 'U'로만 이루어져 있습니다.

1. 사전 순서는 DFS 탐색 순서와 동일하다.
2. 현재 단어를 만들 때마다 번호를 증가시킨다.
3. 만들어진 단어가 입력 word와 같으면 현재 번호를 반환한다.
4. 길이가 5가 되면 더 이상 탐색하지 않는다.
def solution(word):
    answer = 0
    count = 0
    vowels = ['A', 'E', 'I', 'O', 'U']

    def dfs(current):
        nonlocal answer, count

        # 단어를 만들 때마다 사전 순서 증가
        if current:
            count += 1

            # 찾는 단어라면 위치 저장
            if current == word:
                answer = count
                return

        # 길이가 5이면 더 이상 추가하지 않음
        if len(current) == 5:
            return

        # A -> E -> I -> O -> U 순서로 탐색
        for v in vowels:
            dfs(current + v)

    dfs("")

    return answer

98번 뒤에 있는 큰 수 찾기

정수로 이루어진 배열 numbers가 있습니다. 배열 의 각 원소들에 대해 자신보다 뒤에 있는 숫자 중에서 자신보다 크면서 가장 가까이 있는 수를 뒷 큰수라고 합니다.
정수 배열 numbers가 매개변수로 주어질 때, 모든 원소에 대한 뒷 큰수들을 차례로 담은 배열을 return 하도록 solution 함수를 완성해주세요. 단, 뒷 큰수가 존재하지 않는 원소는 -1을 담습니다.

제한사항
● 4 ≤ numbers의 길이 ≤ 1,000,000 
● 1 ≤ numbers[i] ≤ 1,000,000

1. 배열을 왼쪽부터 순회한다.
2. 아직 뒷 큰수를 찾지 못한 숫자의 인덱스를 스택에 저장한다.
3. 현재 숫자가 스택의 가장 최근 숫자보다 크다면:
3-1. 현재 숫자는 그 숫자의 뒷 큰수가 된다.
3-2. 결과 배열에 저장하고 스택에서 제거한다.
4. 스택에는 아직 뒷 큰수를 찾지 못한 숫자들만 남는다.
5. 마지막까지 처리 후 남은 값들은 뒷 큰수가 없으므로 -1.
def solution(numbers):
    n = len(numbers)

    # 기본값은 -1 (뒷 큰수가 없는 경우)
    answer = [-1] * n

    # 뒷 큰수를 아직 찾지 못한 숫자의 인덱스 저장
    stack = []

    for i in range(n):

        # 현재 숫자가 스택의 마지막 숫자보다 크다면
        # 해당 숫자의 뒷 큰수를 찾은 것
        while stack and numbers[stack[-1]] < numbers[i]:
            idx = stack.pop()
            answer[idx] = numbers[i]

        # 현재 숫자의 뒷 큰수도 나중에 찾기 위해 저장
        stack.append(i)

    return answer

🤔 개인과제

https://colab.research.google.com/drive/1fksQmXAo6upiuUZpyaY3LxeL1fbG8QPN?usp=sharing

 

[QAQC_6기] 통계 & 머신러닝 개인 과제.ipynb의 사본

Colab notebook

colab.research.google.com

내일부터 풀 예정이다. 오늘 시간이 없어가 ㅎㅎ..