코딩테스트

프로그래머스 음양더하기

SigmoidFunction 2021. 7. 11. 10:44
728x90

매일 코테 1단계라도 한개씩 풀어보려고 한다.

근데 쉽지 않음ㅋㅋㅋㅋ

 

어쨌든 오늘은 음양더하기!

 

문제 설명

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


제한사항

  • absolutes의 길이는 1 이상 1,000 이하입니다.
    • absolutes의 모든 수는 각각 1 이상 1,000 이하입니다.
  • signs의 길이는 absolutes의 길이와 같습니다.
    • signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.

입출력 예

absolutes                                              signs                                                                        result

[4,7,12] [true,false,true] 9
[1,2,3] [false,false,true] 0

 

문제는 이렇다!

 

absolutes, signs이 들어가서 합을 구하는거!

 

 True면 양수 False면 음수

 

꽤나 쉬운 문제라고 생각했다. 

 

어차피 absolutes나 signs 이나 길이가 같으니까 signs의 인덱스를 보고 absolutes의 부호를 결정하고난 다음에 합을 구하면 되겠구나!

하고 풀었다.

 

그 결과는

def solution(absolutes, signs):
    tempt = []
    for i in range(len(signs)):
        if signs[i] ==True:
            tempt.append(absolutes[i])
        else:
            a = 0-absolutes[i]
            tempt.append(a)
            
    answer = sum(tempt)
    return answer

빈 리스트인 tempt에 음양판별해서 넣어버렸다.

 

True면 해당 인덱스에 위치한 absolutes값을 넣고

False면 0에서 빼주면 마이너스니까

 

근데

 

다른 사람들을 보니 그냥 리스트에 넣을 필요없이 걍 더하고 빼도 되겠더라

 

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

이런 식으로 혹은

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

True False니까 

if not을 사용해보는 것도 좋은 방법인듯하다

 

결국 방법은 고만고만하지만

 

처음 생각했던 리스트에 넣는 방법은 괜한 연산을 늘리고 메모리를 늘리는 과정인 것 같다.

 

리스트가 너무 익숙하다보니 자꾸 리스트부터 찾는 나쁜 습관이 생겨버렸다 ㅠㅠ

728x90