오늘 한 일
- 코드카타
파이썬
21. 하샤드 수
def solution(x):
num = []
for i in str(x) :
num.append(int(i))
if x % sum(num) == 0:
answer=True
else:
answer=False
return answer
처음에 문제를 잘못 이해해서 그냥 자릿수로 나누는줄 알고 if문에 len(num) 썼다가 sum으로 고침.
그리고 문제에서 정답 출력 예시가 true, false 길래 문자열 true false로 했는데

얼핏 보면 출력이랑 답이랑 같은데 타입이 달라서 오류가 뜨는것같았다.
제미나이한테 타입 어떻게 고치냐고 물어보니까 그냥 첫글자를 대문자로 True, False 라고 하면 알아서 Boolean으로 나온다고 해서 생각보다 별거아니었네... 싶었음
22.두 정수 사이의 합
def solution(a, b):
answer = 0
if a==b:
answer = a
elif a<b:
for i in range(a,b+1):
answer += i
else :
for i in range(b,a+1):
answer += i
return answer
저번에 비슷한 문제를 풀었어서 이번에도 똑같이 리스트 안에 a~b 숫자를 담은 다음 sum으로 했는데, 테스트를 돌려보니 시간 초과로 오답처리 된 게 많았다. 아마 a,b가 큰 수 일때 일일이 리스트에 넣고 합치는게 너무 비효율적이었던듯..
answer+=i로 고쳤더니 금방 해결됨
23. 콜라즈 추측
def solution(num):
count=0
for i in range(500):
if num%2==0:
num = num/2
count = count+1
if num ==1:
break
elif num%2!=0:
num= num*3 + 1
count = count+1
if num ==1:
break
elif num==1:
count=1
if count==500:
count=-1
answer = count
return answer
조건 세우는게 너무 까다로웠다ㅜㅜ
테스트 돌리는데 자꾸 1개 테스트에서 틀림
문제 다시 보니까 1일경우에 뭐 수정했다했는데 뭐가 틀린건지 모르겠음
def solution(num):
count=0
for i in range(500):
if num==1: #1인 경우
count=0
elif num%2==0: #짝수인 경우
num = num/2
count = count+1
if num ==1:
break
elif num%2!=0: #홀수인 경우
num= num*3 + 1
count = count+1
if num ==1:
break
if count==500:
count=-1
answer = count
return answer
제미나이한테 원인을 물어봤더니 홀/짝을 나누기 전에 입력값이 1인 경우를 먼저!! 해야 정상적으로 돌아간다고 해서 순서를 바꿨더니 해결됨 ㅎㅎ
근데 내가 봐도 코드가 너무 긴 것 같아서 나중에 시간나면 좀 더 간단하게 만드는법도 알아봐야 할듯
24. 서울에서 김서방 찾기
def solution(seoul):
if 'Kim' in seoul:
index = seoul.index('Kim')
return print(f"김서방은 {index}에 있다")

이번에도 보기엔 똑같은데 타입이 달라서 정답처리가 안되는 것 같았다.
찾아보니 프로그래머스에서 정답처리가 되려면 return으로 정답이 반환되어야 하는데, print를 쓰면 우리 눈에는 보이지만 반환 된 값은 없어서 null이 뜬다고 한다. 그래서 정답이 되려면 문자열 그 자체를 그냥 반환해야 됨.
수정 버전
↓
def solution(seoul):
if 'Kim' in seoul:
index = seoul.index('Kim')
return f"김서방은 {index}에 있다"
+) 'Kim'이 리스트에 없으면 문제가 되지만, 이미 해당 문제에서는 리스트에 반드시 'Kim'이 포함 된 것을 전제로 하기 때문에 아래와 같이 간단하게도 가능하다
def solution(seoul):
# index()로 바로 위치를 찾아서 문자열에 넣고 반환!
return f"김서방은 {seoul.index('Kim')}에 있다"
25. 나누어 떨어지는 숫자 배열
def solution(arr, divisor):
answer = []
for i in arr:
if i%divisor==0:
answer.append(i)
elif i%divisor!=0:
answer=answer
if len(answer)==0:
answer.append(-1)
answer.sort()
return answer
처음에 나누어 떨어지는 if + answer에 아무것도 없으면 -1추가 만 했더니 몇몇 테스트 실패해서
안 나누어 떨어지는 경우 추가 + 반복문 밖에 if문으로 -1추가 했더니 통과함
SQL
2. 역순 정렬하기
SELECT NAME,
DATETIME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID DESC;
- 데이터 분석 입문(라이브 세션) 복습 & 실습
어제 덜 한 부분
4) 데이터 변환하기
# 1. [Map] 성별을 한글로 변환
gender_map = {'Female': '여성', 'Male': '남성'}
df_sorted['성별'] = df_sorted['sex'].map(gender_map)
df_sorted.head()
# 2. [Apply] 팁 비율(Tip Rate)에 따라 고객 등급 분류
# 팁이 총액의 20% 이상이면 'VIP', 아니면 'Normal'
def classify_customer(row):
rate=row['tip'] / row['total_bill'] * 100
return 'VIP' if rate >= 20 else 'Normal'
# axis=1을 써서 행 단위로 적용
df_sorted['고객등급'] = df_sorted.apply(classify_customer,axis=1)
df_sorted[['성별', 'total_bill', 'tip', '고객등급']].head()
5) 데이터 합치기 1 : 정보 병합
# 1. 요일별 할인율 테이블 생성 (미니 데이터프레임)
discount_policy = pd.DataFrame({
'day': ['Thur', 'Fri', 'Sat', 'Sun'],
'discount_rate': [0.05, 0.0, 0.1, 0.15] # 목:5%, 금:0%, 토:10%, 일:15%
})
discount_policy
# 2. merge로 병합 (기준: day)
# 팁 데이터(Left)에 할인율 정보(Right)를 붙입니다.
df_merged = pd.merge(df, discount_policy, on='day',how='left')
df_merged.tail()
# 3. 할인이 적용된 'final_price' 계산 (기존 금액 * (1 - 할인율))
df_merged['final_price'] = (df_merged['total_bill']*(1-df_merged['discount_rate'])) #그냥 일반 파이썬 코드 짜듯이 식 써봤는데 맞았음
df_merged[['day', 'total_bill', 'discount_rate', 'final_price']].head()
6) 데이터 합치기 2 : 데이터 추가
# 1. VIP룸 추가 데이터 생성 (구조가 같아야 함)
vip_data = pd.DataFrame({
'total_bill': [150.0, 200.0],
'tip': [20.0, 30.0],
'sex': ['Male', 'Female'],
'smoker': ['No', 'No'],
'day': ['Sat', 'Sun'],
'time': ['Dinner', 'Dinner'],
'size': [5, 6],
'order_date': pd.to_datetime(['2024-02-01', '2024-02-02'])
})
vip_data
# 2. concat으로 위아래로 합치기
# ignore_index=True: 인덱스를 0부터 다시 매김
df_final = pd.concat([df, vip_data], axis=0,ignore_index=True)
print(f"합치기 전: {len(df_merged)}행, 합친 후: {len(df_final)}행")
# Output: 합치기 전: 244행, 합친 후: 246행
7) 그룹 집계
요일별(day)로 묶어서 total_bill(평균)과 tip(최대값) 확인
report = df_final.groupby('day').agg({
'total_bill': ['mean', 'max'], #mean, max 둘 다 나오게 하는 방법을 몰랐다 !!
'tip': ['mean', 'max']
})
report
- 커리어 스터디
커리어 스터디 260327
반도체 품질 관리
https://www.skcareersjournal.com/3450
반도체 품질관리에서 중요한 것
예측 게임, 불량이 발생하기 전 먼저 감지하고 선제 대응하는 것이 핵심이다. 예전처럼 문저가 생긴 후 대처하는 방식으로는 한계가 있음. 0.001%의 오차도 수율에 치명적 영향.
반도체 품질관리 (평가팀)의 업무?
품질 장비들이 항상 최적의 상태를 유지할 수 있도록 정기적인 점검, 보완 필요. 고객사에서 요구하는 제품 스펙을 충족시키기 위한 품질 데이터를 실시간으로 수집하고 분석하는 역할.
QC직무의 핵심 : 제품의 품질을 지속적으로 유지, 관리하는 일. 실시간 데이터 모니터링 및 공정에서 발생 가능한 다양한 품질 이슈를 조기에 감지해 대응. / 수집된 데이터는 단순한 확인용이 아니라 문제를 사전에 예방, 공정 조건을 미세하게 조정하는 데 주요 의사결정 근거로 작용.
QA vs QC
QA : 시스템적인 접근. 고객 클레임 대응 및 품질 시스템 구축, 품질 수준 유지를 위한 환경 조성.
QC : 품질 데이터를ㄹ 실시간으로 점검, 제품이 기준에 맞게 생산되고 있는지를 관리하는데 집중
가장 밀접한 부서 :
생산팀. 품질 정보가 생산 공정에 반영되어야 하므로.
품질보증팀(QA). 고객사 피드백이 들어왔을 때 QC에서 제공한 데이터를 기반으로 빠르게 대응할 수 있도록 협조함.
품질? 꼼꼼함이 필요함
반도체? 반도체 산업 성장, 고부가가치 산업이자 미래 성장 동력이 될 것으로 주목받기 때문
과거~현재의 가장 큰 차이 : 예전에는 한두가지 지표로 판단, 지금은 제품 하나당 2000~3000개 데이터. 따라서 ‘무엇을 봐야 할지’를 아는 분석력이 중요, 수치 비교를 넘어 상관관계 도출, 예측까지 필요. -> 데이터를 기반으로 한 사전 감지가 중요하다.
신입사원이 입사 후 첫 1년동안 배워야 할 부분? 절차의 의미를 이해하는 자세. ‘왜 이 절차가 필요한가’를 고민해야 품질관리자로서 성장할 수 있다.
'내일배움캠프(본캠프)' 카테고리의 다른 글
| [내일배움캠프] 본캠프 3/31 (0) | 2026.03.31 |
|---|---|
| [내일배움캠프] 본캠프 3/30 (0) | 2026.03.30 |
| [내일배움캠프] 본캠프 3/26 (1) | 2026.03.26 |
| [내일배움캠프] 본캠프 3/25 (0) | 2026.03.25 |
| [내일배움캠프] 본캠프 3/24 (0) | 2026.03.24 |