티스토리 뷰

728x90
반응형

https://programmers.co.kr/learn/courses/30/lessons/76501?language=python3 

 

코딩테스트 연습 - 음양 더하기

어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 re

programmers.co.kr

 

메소드 사용법을 익히기 위해 쉬운 문제부터..

이문제는 zip을 사용하는 문제이다. 

하지만 나는 zip이 생각이 안났음 ㅋ ㅋ ㅋ

 

따라서 내코드

def solution(absolutes, signs):
    answer = 0
    for i in range(len(absolutes)):
        if signs[i] == False:
            answer-=absolutes[i]
        else: answer+=absolutes[i]
    
    return answer

 

zip을 적용해서 다시 풀어보니 

def solution(absolutes, signs):
    answer = 0
    signs_list=[]
    for item in signs:
        if !item:
            signs_list.append(-1)    
        else:
        	signs_list.append(1)
    pairs = zip(absolutes,signs_list)
    for item in pairs:
        answer+=item[0]*item[1]
    
    
    return answer

 

얾 왜 더 복잡해짐? ㅋㅋ 

 

다른 사람 코드 1

def solution(absolutes, signs):
    return sum(absolutes if sign else -absolutes for absolutes, sign in zip(absolutes, signs))

언제 이렇게 짧게 짤 수 있죠 

 

 

다른 사람 코드 2

def solution(absolutes, signs):
    answer=0
    for absolute,sign in zip(absolutes,signs):
        if sign:
            answer+=absolute
        else:
            answer-=absolute
    return answer

이거는 처음 코드랑 비슷한데 왜 zip 쓰면서 이상하게 짰을까

 

 

다른 사람 코드 3

def solution(absolutes, signs):
    res = []
    for idx in range(len(signs)):
        if signs[idx] == True:
            res.append(absolutes[idx])
        else:
            res.append(-absolutes[idx])
    return sum(res)

print(solution([4,7,12], [True,False,True]))

프린트에 바로 이렇게 하는 것도 ,, 좋은듯 ..

 

나도 한줄 코딩 하고싶다 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함