<aside> 💬
lv0
, 요구사항 구현
라이캣은 크리스마스 선물 룰렛 게임을 하고 있습니다. 룰렛에는 '쿠키 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>
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
결과값을 저장할 변수 초기화
초기 결과값을 저장할 변수 result
를 0으로 초기화합니다.
리스트 순회
주어진 리스트 data
의 각 요소를 순회하며, 요소의 인덱스 i
와 값 s
를 가져옵니다.
문자열 처리
문자열 s
를 공백을 기준으로 분리하여 리스트로 만든 후, 두 번째 요소(인덱스 1)를 선택합니다.
이 부분은 " "
을 기준으로 문자열을 나눈 후 두 번째 요소를 선택하는 것입니다. 예를들어 "3 개"
에서 숫자 부분만 추출합니다. 이후에 "개"
를 빈 문자열로 대체하여 숫자 부분만 남깁니다. 마지막으로 int()
함수를 사용하여 문자열을 정수로 변환합니다.
결과값 계산
반복문 내에서 각 요소의 인덱스 i
에 1을 더하고, 이를 문자열에서 추출한 숫자와 곱하여 result
에 누적합니다.
enumerate
기본 형태: for 인덱스, 값 in enumerate(순회 가능한 객체)
개념: enumerate
함수는 순회 가능한(iterable) 객체(리스트, 튜플, 문자열 등)의 각 요소에 대해 인덱스와 값을 함께 반환할 수 있습니다.
my_list = ['apple', 'banana', 'cherry']
list(enumerate(my_list)) #출력: [(0, 'apple'), (1, 'banana'), (2, 'cherry')]
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
각 문자열에서 숫자 추출
주어진 리스트 data
의 각 문자열에서 공백을 기준으로 문자열을 분리한 후, 두 번째 요소에서 마지막 문자(일반적으로는 '개' 등의 단위)를 제외한 숫자 부분만 추출합니다.
결과값을 저장할 변수 초기화
결과값을 저장할 변수 result
를 0으로 초기화합니다.
리스트 순회
enumerate
함수를 사용하여 cookies
리스트의 각 요소와 인덱스를 가져옵니다. 여기서 order
변수는 인덱스를, cookie
변수는 해당 요소를 나타냅니다.
enumerate
함수의 두 번째 매개변수로 시작값을 1로 지정했으므로 인덱스는 1부터 시작됩니다.
결과값 계산
반복문 내에서 각 요소의 인덱스에 1을 더하고, 이를 문자열에서 추출한 숫자와 곱하여 result
에 누적합니다.