<aside> 💬

lv0, 요구사항 구현

크리스마스 쿠키

문제 설명

Untitled

라이캣은 크리스마스 선물 룰렛 게임을 하고 있습니다. 룰렛에는 '쿠키 1개'부터 '쿠키 10개'까지 값이 들어 있습니다. 룰렛은 총 3번 돌릴 수 있고, 첫번째 시도에서 나온 값은 곱하기 1을 하고, 두번째 시도에서 나온 값은 곱하기 2를 하고 세번째 시도에서 나온 값은 곱하기 3을 하기로 하였습니다. 라이캣이 가져갈 쿠키의 수를 리턴하는 함수를 완성해주세요.


제한 사항


입출력 예

입력 출력
['쿠키 3개', '쿠키 2개', '쿠키 5개'] 22
['쿠키 1개', '쿠키 2개', '쿠키 3개'] 14

입출력 설명

['쿠키 3개', '쿠키 2개', '쿠키 5개']은 각각 1배, 2배, 3배가 되어야 합니다. 3 * 1 + 2 * 2 + 5 * 3으로 22가 되어야 합니다.

</aside>

😺 풀이 1. 문자열 일부 추출

def solution(data):
    result = 0 **#1 결과값을 저장할 변수 초기화**
    for i, s in enumerate(data): **#2 리스트 순회**
        number = int(s.split(" ")[1].replace("개", "")) **#3 문자열 처리**
        i += 1 **#4 결과값 계산**
        result += i * number
    return result

단계별 풀이 전략

  1. 결과값을 저장할 변수 초기화

    초기 결과값을 저장할 변수 result를 0으로 초기화합니다.

  2. 리스트 순회

    주어진 리스트 data의 각 요소를 순회하며, 요소의 인덱스 i와 값 s를 가져옵니다.

  3. 문자열 처리

    문자열 s를 공백을 기준으로 분리하여 리스트로 만든 후, 두 번째 요소(인덱스 1)를 선택합니다.

    이 부분은 " "을 기준으로 문자열을 나눈 후 두 번째 요소를 선택하는 것입니다. 예를들어 "3 개"에서 숫자 부분만 추출합니다. 이후에 "개"를 빈 문자열로 대체하여 숫자 부분만 남깁니다. 마지막으로 int() 함수를 사용하여 문자열을 정수로 변환합니다.

  4. 결과값 계산

    반복문 내에서 각 요소의 인덱스 i에 1을 더하고, 이를 문자열에서 추출한 숫자와 곱하여 result에 누적합니다.

알아둬야 할 개념

enumerate

풀이 2. 문자열 일부 추출

def solution(data):
    cookies = [i.split()[1][:-1] for i in data] **#1 각 문자열에서 숫자 추출**
    result = 0 **#2 결과값을 저장할 변수 초기화**
    for order, cookie in enumerate(cookies, 1): **#3 리스트 순회**
        result += order * int(cookie) **#4 결과값 계산**
    return result

단계별 풀이 전략

  1. 각 문자열에서 숫자 추출

    주어진 리스트 data의 각 문자열에서 공백을 기준으로 문자열을 분리한 후, 두 번째 요소에서 마지막 문자(일반적으로는 '개' 등의 단위)를 제외한 숫자 부분만 추출합니다.

  2. 결과값을 저장할 변수 초기화

    결과값을 저장할 변수 result를 0으로 초기화합니다.

  3. 리스트 순회

    enumerate 함수를 사용하여 cookies 리스트의 각 요소와 인덱스를 가져옵니다. 여기서 order 변수는 인덱스를, cookie 변수는 해당 요소를 나타냅니다.

    enumerate 함수의 두 번째 매개변수로 시작값을 1로 지정했으므로 인덱스는 1부터 시작됩니다.

  4. 결과값 계산

    반복문 내에서 각 요소의 인덱스에 1을 더하고, 이를 문자열에서 추출한 숫자와 곱하여 result에 누적합니다.