HeoBrain AI · DEV · GROWTH

HEO BRAIN · DEV LAB

배운 것을 구조화하고,
실제로 작동하게 만듭니다.

AI, 코딩, 영어, 포트폴리오를 직접 공부하고 만들며 얻은 지식을 누구나 다시 써먹을 수 있게 정리합니다.

heobrain.workflow LIVE
01 collect(experience) 02 structure(knowledge) 03 ship(something useful)

EMAIL NEWSLETTER

새 글을 이메일로 받아보세요

하루 동안 올라온 HeoBrain의 새 글을 매일 오후 8시에 한 통으로 보내드립니다.

인증 이메일의 링크를 눌러야 구독이 완료되며, 언제든 해지할 수 있습니다.

LATEST NOTES

최근에 정리한 글

모든 글 보기

Day 23)프로그래머스: 조건문 활용

이 글의 목차 펼치기

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 변수와 닫히지 않은 괄호를 제출 전에 확인한다.

날짜는 문자열로 이어 붙이지 말고 리스트 자체를 비교한다.

EMAIL NEWSLETTER

새 글을 이메일로 받아보세요

하루 동안 올라온 HeoBrain의 새 글을 매일 오후 8시에 한 통으로 보내드립니다.

인증 이메일의 링크를 눌러야 구독이 완료되며, 언제든 해지할 수 있습니다.

블로그 검색