✅ 오늘 한 것
알고리즘 문제, 팀 프로젝트 데이터 분석
✏️ 오늘 배운 점
def solution(num_list):
if num_list[-1] > num_list[-2]:
num_list.append(num_list[-1] - num_list[-2])
return num_list
else:
num_list.append(num_list[-1]*2)
return num_list
중간중간 코드 결과를 확인하지 않으며 코드 작성을 진행하니 오류를 발견하여도 어디가 잘못 되었는지 확인하지 못하였다.
vs code를 활용하여 일부 코드를 확인하니 int를 소환하고 싶었지만 [:-1]로 작성하니 리스트로 나타나서 오류가 발생했던 점을 확인하고 오류 발생 지점을 수정하여 코드 작성을 완료할 수 있었다.
def solution(a, b, c):
if len({a, b, c}) == 3:
return a+b+c
elif len({a, b, c}) == 2:
return (a+b+c) * ((a**2)+(b**2)+(c**2))
else:
return (a+b+c) * ((a**2)+(b**2)+(c**2)) * ((a**3)+(b**3)+(c**3))
set 함수에서 중복을 제외한 객체만을 가져오기에 a, b, c의 중복 여부를 확인하여 각 상황에 맞는 return 값을 작성하는 코드를 만들 수 있었다.
def solution(myString, pat):
myString = myString.translate(str.maketrans({"A": "B", "B": "A"}))
if pat in myString:
return 1
else:
return 0
A를 B로, B를 A로 변환하였을 때 pat 문자가 myString에 있으면 1, 없으면 0을 반환하는 함수를 만드려고 replace를 생각했었지만서로 변환하면 결국 하나로 통일된다고 생각하여 구글링을 통해 translate와 str.maketrans를 활용하여 코드 작성을 완료했다. 다른 사람의 풀이를 보니 replace를 활용하지만 A를 B가 아닌 다른 문자열로 변환 후 B를 A로 변환한 이후 A를 변환한 다른 문자열을 B로 만들면 처리가 가능한 것을 알 수 있었다. 같은 코드를 사용한다고 해도 활용법에 따라 더 많은 요소를 다룰 수 있겠다는 결과를 찾을 수 있게 되었다.
def solution(n_str):
for i, ch in enumerate(n_str):
if ch != '0':
return n_str[i:]
코드를 작성하면서 enumerate()와 items()를 지금까지는 사용해본 적이 없었다. 하지만, index와 그에 대한 value값을 확인할 수 있도록 하기 위한 구글링을 검색하다가 enumerate()를 확인하고 items()와의 차이점은 무엇인지 확인해보고 이번 기회에 enumerate()를 사용해보고 익숙해지기 위한 과정을 겪는다고 생각을 했다.
- enumerate() → 리스트나 문자열 같은 순서가 있는(iterable) 객체용
- .items() → 딕셔너리(dictionary) 전용
def solution(arr):
for i in range(len(arr)):
for j in range(len(arr)):
if arr[i][j] != arr[j][i]:
return 0
return 1
이 문제는 모든 arr의 index 비교값이 동일하다면 1 하나라도 틀리다면 0을 반환하는 문제이다.
처음에는 return 0과 return 1의 위치를 반대로 하니 결과가 틀리게 나왔다. 코드를 하나하나 읽어보니 if문에서 하나라도 == 동일하게 나온다면 1을 반환하게 되기에 틀린 코드가 되는 것을 확인할 수 있었다.
Severity별 Defect_location에 따른 빈도 수, 합계와 평균 수리비
| Severity | Defect_location | Count | Sum | Mean |
| Critical | Component | 103 | 56067.19 | 533.34 |
| Internal | 115 | 55548.00 | 483.03 | |
| Surface | 115 | 56840.06 | 494.26 | |
| Minor | Component | 116 | 60670.99 | 523.03 |
| Internal | 114 | 60151.89 | 527.65 | |
| Surface | 128 | 63344.09 | 494.88 | |
| Moderate | Component | 107 | 56959.38 | 532.33 |
| Internal | 92 | 46227.44 | 502.47 | |
| Surface | 110 | 51818.11 | 471.07 |

전반적으로 Surface에서 빈도 수가 많은 것을 토대로 제조 단계에서 외관 검출이 빈번하다는 것을 알 수 있음.
Surface에서의 빈도 수가 가장 많은 만큼 Sum도 가장 크게 나타났다.
- Component: Critical, Moderate에서 평균 수리비가 가장 높음 → 내부 부품 결함은 심각도 높을수록 수리 난이도↑ / 비용↑.
- Internal: Minor 단계에서 평균 수리비가 가장 높음 → 작은 결함이라도 내부면 접근성 문제로 비용이 상승.
- Surface: 세 Severity 모두 평균 수리비가 낮음 → 외관 결함은 상대적으로 쉽게 교체·수리 가능.
✏️ 오늘의 핵심
set = 중복 없는, 순서 없는 집합 자료형
합집합, 교집합, 차집합 등 사용 가능
- enumerate() → 리스트나 문자열 같은 순서가 있는(iterable) 객체용
- .items() → 딕셔너리(dictionary) 전용
📌추가로 해야할 점
DataFrame에서 새로운 그룹화(Defect_location)를 진행한 데이터 분석과 가설 검정
'품질관리(QAQC) 데이터 부트캠프(본캠프)' 카테고리의 다른 글
| 연휴(월)_TIL (0) | 2025.10.06 |
|---|---|
| 본캠프_4주차(일)_TIL (0) | 2025.10.05 |
| 본캠프_4주차(금)_TIL (0) | 2025.10.03 |
| 본캠프_4주차(목)_TIL (0) | 2025.10.02 |
| 본캠프_4주차(수)_TIL (0) | 2025.10.01 |