Today I Learned

[내일배움캠프 QA/QC 6기] TIL #036

JiJi0406 2026. 7. 1. 21:57

001

오늘의 코드카타

47. 문자열 내 마음대로 정렬하기

 

 


문제 설명

문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.

 

제한사항

  • strings는 길이 1 이상, 50이하인 배열입니다.
  • strings의 원소는 소문자 알파벳으로 이루어져 있습니다.
  • strings의 원소는 길이 1 이상, 100이하인 문자열입니다.
  • 모든 strings의 원소의 길이는 n보다 큽니다.
  • 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.

 

더보기
def solution(strings, n):
    strings.sort()
    
    s = []
    answer = []

    for i in range(len(strings)):
        s.append((strings[i][n], strings[i]))
        # 리스트에 튜플 형태로 알파벳, 해당 문자열을 넣어줌 
    
    s.sort()
    
    for j in range(len(s)):
        answer.append(s[j][1])
        # 리스트에 튜플의 두 번째 요소인 문자열을 넣어줌
        
    return answer

 

 

 


 

 

002

오늘 학습한 내용

 

[ 통계 & 머신러닝 개인 과제 ]

풀면서 처음부터 복습하는 느낌으로 정리 (내일까지 제출인데 이제야 풀기 시작했다....😅)

 

 

1. 가설검정

1) 독립표본 T-검정 

  • 집단이 2개(정상/고장)이고, 비교할 특성이 연속형 숫자일 때 씀
  • 각 특성별로 t-검정 돌려서 정상/고장 그룹 간 평균 차이가 통계적으로 유의미한지 확인하기
(과제에 작성한 코드 일부 가져옴)
# 정상(Normal)과 고장(Failure) 그룹의 평균 차이 검정
t_stat, p_val = stats.ttest_ind(Normal[feat], Failure[feat])
print(f"[{feat}] t-score: {t_stat:.6f}, p-value: {p_val:.6f}")
  • p-value  : 이 차이가 우연히 생겼을 확률, 0.05보다 작으면 우연 X, 두 집단이 진짜로 다르다는 뜻
  • t-score : 두 집단의 평균이 얼마나 멀리 떨어져 있는지 보여주는 지표, 절대값이 클수록 고장 여부를 가르는 파워가 강한 변수

 

2) 카이제곱 검정 (Chi-square Test)

  • 비교할 두 변수가 모두 범주형(ex. 제품 등급 L/M/H vs 고장 여부 0/1)일 때 사용
# 교차표
contingency_table = pd.crosstab(df['Type'], df['machine_failure'])

# 카이제곱 검정 (통계량, p값, 자유도)
chi2, p, dof, expected = chi2_contingency(contingency_table)

 

2. 상관관계 분석

1) 피어슨 상관계수 + 히트맵

  • 두 연속형 변수의 상관관계 확인 
corr_matrix = df[features].corr()

# 히트맵 시각화
sns.heatmap(corr_matrix, annot=True, fmt='.2f', cmap='coolwarm', center=0)
plt.show()

 

2) T-test와 상관관계의 연결고리 

  • T-test의 t-score 순위랑 상관계수 순위가 일치
  • 분석 방법은 달라도 결국 고장에 미치는 영향력이 큰 변수를 찾는다는 목적은 같음 !

 

3. 머신러닝 - 선형 회귀분석

이건 나중에 봐도 이해하기 쉽게 예시 코드 새롭게 만들고

주석에 설명 줄줄이 달아놨다...

import pandas as pd
from sklearn.linear_model import LinearRegression

# 1. 가상의 예시 데이터 생성 (공부 시간에 따른 시험 점수 예측)
data = {
    'study_hours': [2, 4, 6, 8, 10],
    'exam_score': [40, 55, 70, 85, 95]
}
df = pd.DataFrame(data)

# 2. 독립변수(X)와 종속변수(Y) 설정
# ★ scikit-learn에서 독립변수 X는 대괄호 두 개[[ ]]를 사용!
X = df[['study_hours']]  
y = df['exam_score']

# 3. 선형 회귀 모델 생성 및 학습
model = LinearRegression()
model.fit(X, y)

# 4. 모델 평가를 위한 평가지표 및 회귀계수 추출
r2 = model.score(X, y)          # 결정계수 (R²): 모델의 설명력을 나타냄 (1에 가까울수록 완벽)
slope = model.coef_[0]         # 회귀계수/기울기 (Slope): X가 1단위 증가할 때 Y의 변화량
intercept = model.intercept_   # y절편 (Intercept): X가 0일 때의 기본 Y값

# 5. 학습된 모델 기반으로 새로운 데이터 예측하기
# ★ 예측할 때도 학습할 때와 동일하게 2차원 데이터프레임 형태로 넣어주기
new_data = pd.DataFrame([[7]], columns=['study_hours'])  # 7시간 공부했을 때
predicted_score = model.predict(new_data)[0]

# 6. 결과 출력
print(f"1. 모델 결정계수 (R²): {r2:.4f}")
print(f"2. 도출된 회귀식: Y = {slope:.2f} * X + {intercept:.2f}")
print(f"3. 예측 결과 (7시간 공부 시 예상 점수): {predicted_score:.2f}점")

 

 


 

길게 할 말 없다.

정신 🍒자