Python 코딩테스트 학습 기록 | Day 23 조건문 활용
오늘은 문자열과 리스트의 포함 여부, 조건문, 날짜 비교를 정리했다. 짧은 한 줄 풀이도 먼저 여러 줄 흐름으로 이해한 뒤 사용해 보려고 한다.
문제 링크
부분 문자열 · 꼬리 문자열 · 정수 찾기 · 주사위 게임 1 · 날짜 비교하기
1. 부분 문자열
def solution(str1, str2):
return int(str1 in str2)
str1 in str2는 포함되면 True, 아니면 False다. int(True)는 1, int(False)는 0이므로 문제의 반환 형식에 맞는다.
2. 꼬리 문자열
def solution(str_list, ex):
box = []
for char in str_list:
if ex not in char:
box.append(char)
return "".join(box)
not in은 포함되지 않았는지 확인한다. "".join(box)은 문자열 사이에 아무 문자도 넣지 않고 이어 붙인다.
def solution(str_list, ex):
return "".join(char for char in str_list if ex not in char)
def solution(str_list, ex):
return "".join(filter(lambda char: ex not in char, str_list))
filter와 lambda도 맞는 풀이지만, 처음에는 여러 줄 풀이 또는 리스트 컴프리헨션이 더 읽기 쉽다.
3. 정수 찾기
def solution(num_list, n):
return int(n in num_list)
in은 문자열뿐 아니라 리스트에서도 작동한다. 기존의 answer = 0은 사용하지 않는 변수이므로 제거해도 된다.
4. 주사위 게임 1
def solution(a, b):
if a % 2 != 0 and b % 2 != 0:
return a ** 2 + b ** 2
elif a % 2 != 0 or b % 2 != 0:
return 2 * (a + b)
return abs(a - b)
둘 다 홀수일 때는 and, 하나만 홀수일 때는 or를 사용한다. 첫 조건이 거짓인 상태에서 두 번째 조건을 검사하므로 정확히 홀수가 한 개인 경우만 통과한다.
5. 날짜 비교하기
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
이 반복문 풀이도 정답이다. 처음으로 다른 연도·월·일이 나오면 즉시 결과를 반환한다.
날짜를 "2021112"처럼 이어 붙여 비교하면 2021년 1월 12일과 2021년 10월 1일을 잘못 비교할 수 있다. 또한 join은 문자열 원소를 이어 붙이는 메서드라 정수 리스트에 바로 사용할 수 없다.
실수 방지 체크리스트
in은 문자열과 리스트 모두에서 포함 여부를 검사한다.
join은 문자열 원소를 이어 붙이고, split은 문자열 메서드다.
사용하지 않는 answer 변수와 닫히지 않은 괄호를 제출 전에 확인한다.
날짜는 문자열로 이어 붙이지 말고 리스트 자체를 비교한다.
'Coding_Test' 카테고리의 다른 글
| Day22)프로그래머스: 함수(메서드), 조건문 활용 (0) | 2026.08.02 |
|---|---|
| Day21)프로그래머스: 정렬, 인덱스 보존, 실수의 정수 부분, 문자열을 숫자로 다루는 방법 (0) | 2026.07.31 |
| Day20)프로그래머: 함수(메서드) (0) | 2026.07.30 |
| Day19)programmers-문자열 분리, 반복 추가, 빈 배열 추가·삭제, 스택, K개 수 뽑기 (0) | 2026.07.30 |
| Day18)파이썬 if와 for의 순서: 필터링, 변환, 분기까지 초보자 정리 (0) | 2026.07.28 |