내일배움캠프(본캠프)

[내일배움캠프] 본캠프 3/31

anscodus 2026. 3. 31. 20:51

오늘 한 일

  • 코드카타
더보기

28. 없는 숫자 더하기

def solution(numbers):
    num=[]
    for i in range(10):
        if i not in numbers:
            num.append(i)
    return sum(num)

오랜만에 한번에 해결!!

 

 

 29. 제일 작은 수 제거하기

def solution(arr):
    answer = []
    for i in arr:
        min = 0
        if i < min:
            min = i
    answer.append(arr.remove(i))
    if len(answer) ==0 :
        answer.append(-1)
    else:
        answer = answer
    return answer

 arr만큼 반복하는데 이때 i가 최소값보다 작으면 i가 최소값이 되고 -> answer에는 arr에서 최소값인 i를 제거하고 담은 다음 마지막에 answer의 길이가 0이면 -1을 추가하는 방법으로 하려고 했으나, null이 출력됨

 

오답 분석 by 제미나이 :

1. min=0이 for문 안에 있어서 반복문이 반복 될 때 마다 0으로 돌아감

2. 리스트 안이 모두 양수이면 i<0이 항상 거짓이 되어버림

3. arr.remove(i) 여기서 i는 최솟값이 아니다(min으로 했어야햇는데, 이건 내 실수....)

4. remove는 리스트 수정만 하고 아무것도 반환하지 않음 !!! -> None을 반환함 -> answer.append(None)이 되는것.

 

 수정

def solution(arr):
    if len(arr) <= 1:
        return[-1]
    arr.remove(min(arr))
    return arr

 

 

 

30.  가운데 글자 가져오기

def solution(s):
    if len(s)%2 ==0:
        answer = s[(len(s)/2):((len(s)/2)+2)]
    elif len(s)%2!=0:
        answer = s[(len(s)/2):(len(s)/2+1)]
    return answer

 전체 길이가 짝수인 경우랑 홀수인 경우로 나눴는데 인덱스 계산에서 오류가 남

 

1. 나누기 / 기호를 사용하면 값이 2 가 아니라 2.0(소수) 형태로 나옴 -> 인덱스 안에는 항상 정수. -> //로 바꿔보기

2. 길이가 짝수인 경우, s[2:4]가 되기때문에 인덱스 2,3 을 가져옴 -> 기준점에서 -1을 한 곳 부터 시작해야 함.

 수정

def solution(s):
    if len(s)%2 ==0:
        answer = s[(len(s)//2-1):((len(s)//2)+1)]
    elif len(s)%2!=0:
        answer = s[(len(s)//2):(len(s)//2+1)]
    return answer

 

 좀 더 보기에 깔끔하게 할 수 있다

def solution(s):
    # 길이를 2로 나눈 '정수 몫'을 미리 구해둡니다. (// 사용)
    mid = len(s) // 2 
    
    if len(s) % 2 == 0:
        # 짝수일 때: 중간 기준점에서 왼쪽 한 칸부터, 오른쪽 한 칸까지 (mid-1 부터 mid까지)
        answer = s[mid-1 : mid+1] 
    else:
        # 홀수일 때: 중간 기준점 한 글자만 가져옴
        answer = s[mid : mid+1] # s[mid]로 써도 무방합니다.
        
    return answer

 

  • 파이썬 개인과제

레벨2

더보기

2-3

# 바로 plot() / figsize=(10,6)
fig, ax = plt.subplots(figsize=(10,6))

# 빈칸을 채워 코드를 완성하세요
# 선 그래프(Line Chart) 작성
plt.plot(date_sum['Date'],date_sum['Production'], label='Production')   # 예시
plt.plot(date_sum['Date'], date_sum['Defects'], label='Defects')      # 예시
plt.title("Daily Trends : Production and Defects")
plt.xlabel("Date")
plt.ylabel("Count")
plt.legend()   #범례 표시
plt.grid(True)
plt.show()

 

실수

# 날짜별 집계
df['Date']=pd.to_datetime(df['Date'])

date_sum = df.groupby("Date").agg({
    'Production':'sum',
    'Defects':'sum'
}).reset_index()
date_sum=date_sum.sort_values('Date')

1.  날짜별 집계에서 Date칼럼 datetime으로 안바꿈

2. agg 잘못 씀(문제 이해 잘못해서 Date도 sum 함

3. 이상치 처리 했는데 마지막에 그래프 돌릴때 런타임 리셋되고 다시 실행 안해서 그래프 이상하게 나옴...

 

레벨3

더보기

3-1

 

df = df.drop_duplicates(subset=['production'])

production 열 기준 -> subset !!

# 히스토그램 시각화
plt.figure(figsize=(8, 6))

# Production Histogram
plt.hist( data_cleaned['production'] , bins=10, edgecolor='k', alpha=0.7)

plt.xlabel('Production')
plt.ylabel('Frequency')
plt.title('Production Distribution')
plt.show()

# 분석가의 해석
# 여기에 해석을 입력하세요 (예: 생산량은 대체로 XX~YY 구간에 분포한다.)

 계속 히스토그램이 이상하게 bar가 많이 나와서 세션 자료 보면서 수정했더니 됨

(data_cleaned['production]<<<<컬럼을 붙여야 내가 보려는 데이터만 나옴)