✅ 오늘 한 것
코드카타, 실전 데이터 분석 5주차 복습, Python 개인 과제(Level 3.)
✏️ 오늘 배운 점
def solution(n):
answer = list(str(n))
answer.sort(reverse=True)
answer = int("".join(answer))
return answer
문자열 요소를 하나로 합치기 위해 찾아본 결과 join()은 리스트 형태의 문자열 요소들을 하나의 문자열로 합치는 메서드인 것을 알게 되었고, 문제에서 정수로 변환하여 나타내라고 하여 join()을 int에 묶어서 결과가 나타날 수 있도록 코드 작성을 하였다.
def normalize_weights(weight_list):
new_list = []
for weight in weight_list:
if "kg" in weight:
weight = weight.replace("kg","")
weight = float(weight)
weight = int(weight * 1000)
weight = (str(weight)+ "g")
new_list.append(weight)
else: #weight 문자가 g인 경우
new_list.append(weight)
return new_list
# 제품 무게 리스트
weight_list = ["0.5kg", "500g", "1kg", "750g", "2kg"]
# 단위 통일 실행
normalize_weights(weight_list)
# 결과
['500g', '500g', '1000g', '750g', '2000g']
in과 replace를 조건문에서 활용하는 법을 배울 수 있었다. 또한, 이 코드를 작성하면서 들여쓰기 실수가 엄청 많아서 들여쓰기가 중요하다는 것을 다시 한 번 볼 수 있었다.
def equipment_code_decoder(code_list):
for code in code_list:
converted_code = code
if "영" in code:
converted_code = converted_code.replace("영", "0")
if "일" in code:
converted_code = converted_code.replace("일", "1")
if "이" in code:
converted_code = converted_code.replace("이", "2")
if "삼" in code:
converted_code = converted_code.replace("삼", "3")
if "사" in code:
converted_code = converted_code.replace("사", "4")
if "오" in code:
converted_code = converted_code.replace("오", "5")
if "육" in code:
converted_code = converted_code.replace("육", "6")
if "칠" in code:
converted_code = converted_code.replace("칠", "7")
if "팔" in code:
converted_code = converted_code.replace("팔", "8")
if "구" in code:
converted_code = converted_code.replace("구", "9")
print(f"[{code}]에 대한 설비 코드는 [{converted_code}]입니다.")
# 설비 코드 목록
code_list = [
"삼5이사",
"0오6칠",
"48삼구",
"이74팔",
"9일이삼"
]
# 코드 변환 함수 실행
equipment_code_decoder(code_list)
# 결과
[삼5이사]에 대한 설비 코드는 [3524]입니다.
[0오6칠]에 대한 설비 코드는 [0567]입니다.
[48삼구]에 대한 설비 코드는 [4839]입니다.
[이74팔]에 대한 설비 코드는 [2748]입니다.
[9일이삼]에 대한 설비 코드는 [9123]입니다.
지금으로서는 조건문을 하나하나 확인하면서 코드를 수정하는 코드를 작성하는 것밖에 생각이 나지 않지만 더 간결한 코드 작성이 가능하지 않을까라는 생각이 들며 추후 배우는 문법들을 통해서 이 코드가 어떻게 간결하게 줄여질지 기대가 되는 코드이기도 하다.
처음에는 converted_code = code를 작성하지 않아 print() 결과값이 조건문을 작동하면서 각 객체에 대한 결과값이 아닌 전체 결과값이 나와서 수정을 거쳐 위의 코드로 작성할 수 있게 되었다.
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((positions[1][0]-positions[0][0])**2
+ (positions[1][1]-positions[0][1])**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)
코드를 작성하는 데에 어려움은 없었지만, distance 작성에서 괄호를 제대로 닫지 않아 예상과 다른 결과값이 나오는 것을 이해하지 못하여 어떤 코드가 잘못 작성되어 결과값이 다르게 나왔는지 찾는 데에서 시간이 걸렸다.
def solution(a, b):
answer = 0
if a == b:
return a
elif a > b:
for i in range(b, a+1):
answer += i
elif b > a:
for i in range(a, b+1):
answer += i
return answer
처음에는 elif 및 for 반복문의 값에도 return을 작성하여 계속해서 오류 처리가 났다. 마지막에 return을 해야겠다는 생각으로 return을 없애니 코드가 돌아가기는 했다.
✏️ 오늘의 핵심
코드 작성에서 중요한 것은 단순히 정답을 맞히는 것이 아니라, 오류를 통해 왜 잘못되었는지를 파악하고 수정하는 과정에서 성장하는 것임을 다시 느꼈다. join()으로 문자열을 합치는 방법, in과 replace를 조건문에 적용하는 법, 변수 초기화의 중요성, 반복문과 조건문의 위치와 return의 사용 위치 등 세부적인 문법 포인트들을 실습하면서 익혔다. 또한 지금은 길게 작성할 수밖에 없는 코드도 앞으로 배울 문법을 통해 더 간결하게 개선될 수 있다는 가능성을 보았고, 들여쓰기와 괄호 같은 기본 문법 요소가 코드 실행의 정확성을 크게 좌우한다는 사실도 체감했다.
📌추가로 해야할 점
코드카타(SQL & Python), SQLD
'품질관리(QAQC) 데이터 부트캠프(본캠프)' 카테고리의 다른 글
| 본캠프_3주차(3일)_TIL (0) | 2025.09.24 |
|---|---|
| 본캠프_3주차(2일)_TIL (0) | 2025.09.23 |
| 본캠프_2주차(5일)_TIL (0) | 2025.09.19 |
| 본캠프_2주차(4일)_TIL (0) | 2025.09.18 |
| 본캠프_2주차(3일)_TIL (0) | 2025.09.17 |