PROGRAMMERS level1 부족한 금액 계산하기
🔗 출처
📄 문제
📝 나의 코드 (수정 전)
def solution(price, money, count):
price *= (count + 1) * count / 2
return price - money if price > money else 0
❓ 고민
for문에서 list의 각 요소에 접근해 배열의 길이와 인덱스를 사용하지 않는 방법은 없을까?
for sign in signs:
또는
for absolute in absolutes:
를 사용할 수 있지만, 이렇게 되면 둘 중 하나의 요소에만 접근할 수 있다.
🛠 해결책
얼마 전 수업에서 배웠던 zip() 함수가 떠올랐다.
zip() 함수는 여러 개의 순회 가능한(iterable) 객체를 인자로 받고, 각 객체가 담고있는 원소를 tuple의 형태로 차례로 접근할 수 있는 반복자(iterator)를 반환한다.
numbers = [1,2,3]
letters = ["a","b","c"]
for pair in zip(numbers, letters):
print(pair)
#(1, 'a')
#(2, 'b')
#(3, 'c')
참고로 리스트 앞에 풀기(unpacking) 연산자를 붙여 zip() 함수에 넘기면 unzip 즉, 해체가 된다. 이 과정을 통해 다시 원래 2개의 tuple을 얻을 수 있다.
numbers, letters = zip(*pairs)
print(numbers) #(1,2,3)
print(letters) #('a','b','c')
📝 나의 코드 (수정 후_미완성)
def solution(absolutes, signs):
answer = 0
for absolute, sign in zip(absolutes, signs):
if signs:
answer += absolute
else:
answer -= absolute
return answer
💡 나의 코드 (최종)
생각해보니 if-else문을 1줄에 정리하면 식이 더 깔끔할 것 같았다.
def solution(absolutes, signs):
answer = 0
for absolute, sign in zip(absolutes, signs):
answer += absolute if sign else -absolute
return answer
❗️ 깨달음
if-else문이 나오면 한 줄에 정리할 수 있는지 생각해보기 :)
Author And Source
이 문제에 관하여(PROGRAMMERS level1 부족한 금액 계산하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@pup-paw/PROGRAMMERS-level1-부족한-금액-계산하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)