문제: 부분 문자열
https://school.programmers.co.kr/learn/courses/30/lessons/181842
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
내 코드:
def solution(str1, str2):
if str1 in str2: return 1
else: return 0
좋은 코드:
def solution(str1, str2):
return int(str1 in str2)
def solution(str1, str2):
return 1 if str1 in str2 else 0
def solution(str1, str2):
return [0,1][str1 in str2]
문제: 꼬리 문자열
https://school.programmers.co.kr/learn/courses/30/lessons/181841
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
내 코드:
def solution(str_list, ex):
answer = ''
for i in range(len(str_list)):
if ex not in str_list[i]:
answer += str_list[i]
return answer
좋은 코드:
def solution(str_list, ex):
return ''.join(filter(lambda x: ex not in x, str_list))
def solution(str_list, ex):
return ''.join([i for i in str_list if ex not in i])
def solution(str_list, ex):
filtered_list = [s for s in str_list if ex not in s]
return "".join(filtered_list)
문제: 정수 찾기
https://school.programmers.co.kr/learn/courses/30/lessons/181840
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
내 코드:
def solution(num_list, n):
if n in num_list: return 1
else: return 0
좋은 코드:
def solution(num_list, n):
return int(n in num_list)
def solution(num_list, n):
return 1 if n in num_list else 0
문제: 주사위 게임
https://school.programmers.co.kr/learn/courses/30/lessons/181839
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
내 코드:
if a % 2 == 0 & b % 2 == 0:
&가 ==보다 우선순위가 높기 때문에 파이썬은 이 식을 다음과 같이 괄호가 묶인 것처럼 해석합니다.
if a % 2 == (0 & b % 2) == 0:
def solution(a, b):
if a%2==0 and b%2==0:
return abs(a-b)
elif a%2!=0 and b%2 != 0:
return a**2 + b**2
else:
return 2*(a+b)
좋은 코드:
def solution(a, b):
return a*a+b*b if a & b & 1 else (a + b) << 1 if (a | b) & 1 else abs(a - b)
문제: 날짜 비교하기
https://school.programmers.co.kr/learn/courses/30/lessons/181838
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
내 코드:
🚨 논리적 오류가 발생하는 이유 만약 다음과 같은 데이터가 들어왔다고 가정해 볼게요.
date1 = [2026, 05, 10] (2026년 5월 10일)
date2 = [2025, 12, 31] (2025년 12월 31일)
우리가 보기에 date1은 2026년이고 date2는 2025년이므로, date1이 더 미래의 날짜(앞서지 않는 날짜)입니다. 따라서 0이 반환되어야 정상입니다.
하지만 작성하신 코드의 흐름을 따라가면 이렇게 됩니다.
if date1[0] < date2[0]: 2026 < 2025는 거짓(False)이므로 다음 elif로 넘어갑니다.
elif date1[1] < date2[1]: 5 < 12는 참(True)입니다!
여기서 바로 return 1이 실행되어 버립니다.
즉, 연도가 더 뒤(미래)인데도 불구하고, 단순히 '월'이나 '일' 숫자가 더 작다는 이유만으로 앞선 날짜라고 잘못 판단하게 됩니다.
def solution(date1, date2):
if date1[0] < date2[0]:
return 1
elif date1[1] < date2[1]:
return 1
elif date1[2] < date2[2]:
return 1
else:
return 0
고친코드:
힌트 2 (파이썬 꿀팁): 파이썬에서는 리스트(List)나 튜플(Tuple)끼리도 크기 비교(<, >)가 가능합니다. 파이썬은 리스트를 비교할 때 자동으로 앞의 원소부터 차례대로 비교해 줍니다. (예: [2021, 12, 28] < [2021, 12, 29])
def solution(date1, date2):
if date1 < date2: return 1
else: return 0
좋은 코드:
def solution(date1, date2):
return int(date1 < date2)
def solution(date1, date2):
for i in range(3):
if date1[i]<date2[i]:return 1
elif date2[i]<date1[i]: return 0
return 0
def solution(date1, date2):
answer = 0
a=int(str(date1[0])+str(date1[1])+str(date1[2]))
b=int(str(date2[0])+str(date2[1])+str(date2[2]))
if a<b:
answer+=1
else:
answer+=0
return answer'카테부 4기 판교 ai 실무 > 코테 공부' 카테고리의 다른 글
| [⭐ 꼭 다시보기⭐] 카테부 4기 판교 ai 실무프로그래머스 코딩 기초 트레이닝 Day25 (0) | 2026.06.19 |
|---|---|
| 카테부 4기 판교 ai 실무프로그래머스 코딩 기초 트레이닝 Day24 (0) | 2026.06.18 |
| 카테부 4기 판교 ai 실무프로그래머스 코딩 기초 트레이닝 Day22 (0) | 2026.06.15 |
| 카테부 4기 판교 ai 실무프로그래머스 코딩 기초 트레이닝 Day21 (0) | 2026.06.15 |
| 카테부 4기 판교 ai 실무프로그래머스 코딩 기초 트레이닝 Day20 (0) | 2026.06.13 |