내일배움캠프(본캠프)

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

anscodus 2026. 3. 24. 20:26

오늘 한 일

코드카타

더보기

몫 구하기

※나누기/몫 구하기 차이

#나누기
print(10/3) --- #결과 : 3.333333

#몫 구하기
print(10//3) --- #결과 : 3

#나머지
print(10%3) --- #결과 : 1 (나머지 반환)

 

개인과제 레벨3 도전

더보기

3-3은 생각보다 할만했다

import math
# 장비별 이동 거리 계산 함수

def calculate_single_distance(machine_positions):
    for machine, positions in machine_positions.items():
        # 위치는 항상 두 개의 좌표만 제공됨
        x1, y1 = positions[0]
        x2, y2 = positions[1]
        distance = math.sqrt((x2 - x1)**2 + (y2 - y1)**2)
        print(f"{machine}의 이동 거리: {distance:.2f} 미터")

 # 장비별 위치 데이터
machine_positions = {
    "Machine A": [(0, 0), (5, 5)],
    "Machine B": [(2, 2), (6, 8)],
    "Machine C": [(0, 0), (3, 4)]
}

# 이동 거리 계산 실행
calculate_single_distance(machine_positions)

 machine_positions가 하나의 딕셔너리 -> for문에서 key(장비 이름), value(위치)를 받음 -> value(위치)는 튜플이 들어있는 리스트, x1 y1 자리에 각각의 튜플이 들어가도록 함(변수 지정 완료) -> distance는 그냥 계산 식 그대로

 

 

나머지 3-1, 3-2는 모르겠다ㅜㅜ

 

3-1

g을 공백으로 바꾸는것은 가능, 그러나 kg만 있는 문자열을 골라서 숫자만 남기고 1000을 곱하고 싶은데 방법을 모르겠다..

 

3-2

code_list 안에 있는 각 문자열에서 change딕셔너리 안에 있는 key이면 그 value 값을 출력해서 다시 통째로(?) 출력하는 구조로 짜고싶은데 생각대로 안됨 ㅜㅜ 

 

해설

더보기

3-1

def normalize_weights(weight_list):
    for i in range(len(weight_list)):     #i를 리스트 개수만큼 반복
        if weight_list[i].endswith("kg"):     #리스트에서 i번째 인덱스가 "kg"으로 끝나는지
            weight_list[i] = float(weight_list[i].replace("kg", ""))     #"kg"으로 끝나면 "kg"을 공백으로 변경
        elif weight_list[i].endswith("g"):     #리스트에서 i번째 인덱스가 "g"으로 끝나는지
            grams = float(weight_list[i].replace("g", ""))     #"g"으로 끝나면 "g"을 공백으로 변경
            weight_list[i] = grams / 1000  # g → kg로 변환(1000으로 나누기)  

# 제품 무게 리스트
weight_list = ["0.5kg", "500g", "1kg", "750g", "2kg"]

# 단위 통일 실행
normalize_weights(weight_list)
print(weight_list)

 

 해설을 보니까 kg은 그냥 제거, g은 제거 후 1000으로 나눠서 최종적으로 리스트 내의 데이터가 모두 생략된(?) kg단위를 갖도록 만들어졌다.

 

변명 아닌 변명을 하자면,,, 문제에 써있는대로 [kg은 1000을 곱해서 단위 생략, g은 그냥 단위 생략] 이렇게 생각해서 기초를 잡을 때 부터 생각이 꼬여서 이상하게 만들어버린 것 같다.... 물론 해설을 보니 내가 생각한대로도 해설대로 하면 금방 나올 수 있었겠지만 ㅜㅜ

 

전혀 생각 못했던 부분을 꼽자면, for문으로 i번 돌리는 반복문을 짜고, 그 i 번째 인덱스를 리스트에서 찾는 생각을 아예 못했었다 !! 다음에 비슷한 문제가 나오면 응용해봐야겠다

 

 

 

3-2

def equipment_code_decoder(code_list):
   change = {"공":"0", "일":"1", "이":"2", "삼":"3", "사":"4", "오":"5", "육":"6", "칠":"7", "팔":"8", "구":"9"}

   for code in code_list:
    converted_code = ""
    for char in code:
        if char in change:
            converted_code += change[char]
        else:
          converted_code += char
          
    print(f"[{code}]에 대한 설비 코드는 [{converted_code}]입니다.")

# 설비 코드 목록
code_list = [
    "삼5이사",
    "0오6칠",
    "48삼구",
    "이74팔",
    "9일이삼"
]

# 코드 변환 함수 실행
equipment_code_decoder(code_list)

 딕셔너리를 이용하겠다는 생각 까지는 괜찮았는데 그 이후에 for, if문 짜는게 어려웠다. 

중요 포인트 : converted_code 변수를 처음에 공백으로 두고 if문을 거쳐서 공백에 넣은 다음 결과로 출력하는것이 정답이었다...