매일 코테 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을 사용해보는 것도 좋은 방법인듯하다
결국 방법은 고만고만하지만
처음 생각했던 리스트에 넣는 방법은 괜한 연산을 늘리고 메모리를 늘리는 과정인 것 같다.
리스트가 너무 익숙하다보니 자꾸 리스트부터 찾는 나쁜 습관이 생겨버렸다 ㅠㅠ
'코딩테스트' 카테고리의 다른 글
프로그래머스 - K번째수 (0) | 2021.07.21 |
---|---|
프로그래머스 - 3진법 뒤집기 (0) | 2021.07.19 |
프로그래머스 - 같은 숫자는 싫어 (0) | 2021.07.16 |
프로그래머스 - 콜라츠 추측 (0) | 2021.07.12 |
프로그래머스 폰켓몬 문제 (0) | 2021.06.13 |