001
오늘의 코드카타
40.3진법 뒤집기
문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
제한조건
- n은 1 이상 100,000,000 이하인 자연수입니다.
입출력 예
| n | result |
| 45 | 7 |
| 125 | 229 |
입출력 예 설명
입출력 예 #1
답을 도출하는 과정은 다음과 같습니다.
| n (10진법) | n (3진법) | 앞뒤 반전 (3진법) | 10진법 |
| 45 | 1200 | 0021 | 7 |
따라서 7을 return해야 합니다.
입출력 예 #2
답을 도출하는 과정은 다음과 같습니다.
| n (10진법) | n (3진법) | 앞뒤 반전 (3진법) | 10진법 |
| 125 | 11122 | 22111 | 229 |
따라서 229를 return해야 합니다.
더보기
def solution(n):
a =''
while n > 0:
a = a + str(n%3) # 거꾸로 3진법 전환: 3으로 나눈 나머지를 문자열로 전환해 a에 누적하여 붙임
n = n // 3 # 3으로 나눈 몫을 n으로 갱신
return int(b, 3)
+
int('문자열', 진법)
→ int()함수에 이 문자열이 몇 진법인지 숫자를 같이 넘겨주면, 파이썬이 알아서 10진수로 싹 변환해줌
(몰라서 찾아봄...)
002
오늘 학습한 내용
데이터 분석 심화 주차 D+5
지도학습 vs 비지도학습 복습 ~
더보기
차이점
- 정답(y값)이 있는지 없는지
- 지도학습은 x, y(정답)을 같이 주고 학습시켜서 정답을 예측하는 게 목표 (예: 스팸 메일 분류), 평가도 명확한 지표로 가능함
- 비지도학습은 y 없이 x만 넣어서 숨은 구조나 인사이트를 발견하는 게 목표 (예: 고객 그룹 묶기), 평가는 클러스터 간 간격이 얼마나 넓은지/안에서 얼마나 동질적인지 등등 봄
지도학습은 모델이 정답 맞히면 끝 / 비지도학습은 사람이 의미를 부여해야 완성
[ (라) 머신러닝 심화 2회차 - 비지도학습: 군집화, 차원축소 ]
1. 클러스터링

1) 클러스터링이란
- 이름 없는 데이터에 이름표 달아주기 - 서로 가까이 있는 것들끼리 그룹 묶는 방법론
- 군집 내 거리는 가까울수록, 군집 간 거리는 멀수록 좋음
- 언제 씀?: 크고 복잡한 데이터를 단순화할 때, 정답 없는 새 데이터 분류할 때, 이상 탐지할 때(어떤 클러스터에도 속하지 않는 데이터를 이상치로 봄)
- 정답이 없으니까 분석가가 그만큼 더 설명을 잘 해줘야 함!
2) 클러스터링 알고리즘이 다르면 결과도 다르다
- 거리 측정 방식이나 알고리즘 종류에 따라 같은 데이터라도 군집이 완전히 다르게 형성
3) 문제 해결 프로세스
- 문제 정의(뭘 묶고 싶지?) → 특징 추출(어떤 피처로 비교?) → 군집 수행(K-Means, DBSCAN 등) → 결과 해석(군집 특징 의미 부여)
- QAQC 예시: 불량 유무로만 구분된 데이터를 → 공정 데이터(온도, 압력, 습도 등) 기반으로 "불량 유형 그룹"으로 재분류
4) 활용 예시
- 요약/시각화: 데이터 다 안 봐도 클러스터별 특징으로 경향 파악 (예: 1년치 뉴스 클러스터링해서 주요 토픽 찾기)
- 데이터 이해: 라벨 없는 데이터의 숨은 패턴 발견 (예: 카드 사용 패턴으로 고객 세그먼트 클러스터링)
- 전략 수립: 클러스터 해석해서 실제 액션 아이템 도출 (예: VIP/가격 민감/트렌드 추종 고객으로 분류)
5) 거리 측정
- 두 데이터가 얼마나 가까운지 측정하는 방식, 측정 방식 따라 완전 다른 클러스터 생성
- 유클리디안 거리(피타고라스 정리, 두 점 사이 직선 거리)가 가장 기본 : 연속형 수치 데이터에 적합, 스케일 비슷할 때 좋음, 이상치엔 민감함
- 맨하탄 거리는 차원별 절댓값 차이의 합 (다른 방법들도 있는데 자세히 몰라도 됨)
→ 클러스터링은 거리 기반 알고리즘이라 스케일링이 필요!
→ 안 하고 K-means 돌리면 값이 큰 피처가 거리 계산을 지배해서 결과 왜곡됨
6) 계층적 군집화
- 처음에 그룹 개수 안 정함 → 데이터 간 거리를 계산해서 나무 모양(덴드로그램)으로 묶어가는 방식
- 모든 데이터를 1개짜리 군집으로 시작해서 가장 비슷한 것끼리 점점 묶어가는데, 어느 높이에서 자르냐에 따라 군집 개수가 달라짐
7) ★ K-means
- 가장 널리 쓰는 클러스터링 알고리즘, 데이터를 K개 군집으로 나누는 분할 기반 방식
- K개 그룹 정하고 → 중심점 무작위 설정 → 가까운 중심점의 그룹으로 모임 → 중심점이 그룹 중앙(평균값)으로 이동 → 중심점 안 바뀔 때까지 반복
- 장점 : 빠르고 단순! (현업에서 중요) / 단점 : K를 미리 정해줘야 하고, 이상치에 취약하고, 크기/밀도 다른 군집은 잘 못 찾음
8) 최적의 K 정하는 법
- Elbow Method: K ↑ → 군집 내 거리의 합 ↓, 감소폭이 급격히 꺾이는 지점(팔꿈치) 선택
- Silhouette Score: -1~1 사이 값, 1에 가까울수록 군집이 잘 분리된 거임 → 최고점 선택
9) DBSCAN (밀도 기반)
- 가까이 많이 묶여있는 애들을 일단 클러스터로 묶는 방식, K 미리 안 정해도 되고 임의 형태의 클러스터도 찾을 수 있음
- 노이즈 많거나 / 불규칙하거나 / 클러스터 개수를 모를 때 좋음! 어디에도 속하지 않는 데이터는 노이즈로 간주
2. 차원축소
1) 왜 씀???
- 실무 데이터는 보통 수십~수천 개 피처를 가지는데, 그대로 두면 시각화 불가능, 계산 비용 폭증, 차원의 저주(차원 높아질수록 데이터 간 거리가 무의미해짐) 문제가 생김
- 그래서 중요한 정보는 최대한 보존하면서 차원을 줄이는 기법이 나온 거임
2) ★ PCA (주성분 분석)

- 여러 센서 데이터를 가장 중요한 몇 개 축으로 요약하는 기법, N개 변수를 1~2개로 줄일 수 있음
- 데이터가 가장 넓게 퍼져있는 방향을 찾아서 그걸 새 좌표축(주성분)으로 재정렬 (데이터 구조에 맞게 좌표계를 회전)
- 머신러닝 파이프라인의 전처리 단계로 주로 씀 (장점: 빠름, 노이즈 제거 효과적 / 단점: 선형 관계만 포착, 이상치에 민감)
3) t-SNE
- 고차원에서 가까운 점은 저차원에서도 가깝게, 먼 점은 멀게 배치하는 비선형 방법
- PCA로는 못 잡는 복잡한 구조를 보고 싶을 때 사용
- 단점은 느리고, 실행마다 결과 다르고, 새 데이터엔 적용 불가(매번 재학습 필요), 축 자체에 의미 없음
일반적으로 PCA로 시작 → 필요하면 t-SNE로 시각화 !
+ QAQC 하면서 비지도학습 많이 쓸 일은 없을 것 같고, 쓴다면 차원축소 정도. 일단 지도학습 충분히 마스터하고 여유 될 때 비지도학습 봐보자
'Today I Learned' 카테고리의 다른 글
| [내일배움캠프 QA/QC 6기] TIL #032 (0) | 2026.06.25 |
|---|---|
| [내일배움캠프 QA/QC 6기] TIL #031 (0) | 2026.06.24 |
| [내일배움캠프 QA/QC 6기] TIL #029 (0) | 2026.06.22 |
| [내일배움캠프 QA/QC 6기] TIL #028 (0) | 2026.06.19 |
| [내일배움캠프 QA/QC 6기] TIL #027 (1) | 2026.06.18 |