문제 설명
어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.
제한사항
- absolutes의 길이는 1 이상 1,000 이하입니다.
- absolutes의 모든 수는 각각 1 이상 1,000 이하입니다.
- signs의 길이는 absolutes의 길이와 같습니다.
- signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.
입출력 예
| absolutes | signs |
| [4, 7, 12] | [true, false, true] |
| [1, 2, 3] | [false, false, true] |
내 풀이
def solution(absolutes, signs):
answer = 0
for i in range(len(signs)):
if signs[i] == True:
absolutes[i] = absolutes[i]
answer += absolutes[i]
else:
absolutes[i] = absolutes[i] * (-1)
answer += absolutes[i]
return answer
회고
- 처음에는 반복문을 for i in signs 로 썼는데 되지 않았다. 구글링했을 때 참고한 자바스크립트 답안은 for(var i in signs) 로 써도 돌아가는 것 같던데 왜 파이썬은 안 됐을까? 문법만 다를 뿐 의미는 같은 것 같았는데... 궁금.
- 절댓값에 부호를 달아주기 위한 행을 따로 추가했다. 양수를 음수로 바꾸기 위해 변수 * (-1) 이용
- 절댓값에 부호를 달아주기 위한 행, answer에 값을 담기 위한 행을 따로 쓰지 않고 아래와 같이 간단하게 쓸 수도 있다.
if(signs[i] == True):
answer += absolutes[i]
else:
answer -= absolutes[i]
- absolutes와 signs는 길이가 같은 배열이기 때문에 range(len(absolutes)) 를 써도 똑같이 돌아간다.
- 다른 사람의 풀이를 보니 zip 함수를 쓴 풀이도 있다. zip은 처음 들어봤는데 배워갑니다.
for absolute, sign in zip(absolutes, signs):
if sign:
answer += absolute
else:
answer -= absolute
- 그리고 또 꿀팁을 얻었다. 블록 설정하고 Ctrl + / 누르면 한 번에 주석 설정할 수 있음.
zip 함수
- 동일한 개수의 자료형을 묶어 튜플 형태로 반환
- iterable 객체를 인자로 받음
- 짝이 있는 부분만 return 하고, 짝이 없는 인덱스는 버려진다
- for문에 zip 함수를 쓴 게 이해가 안 돼서 print문으로 하나씩 찍어봤다.
for absolute, sign in zip(absolutes, signs):
print(zip(absolutes, signs))
print(absolute)
print(sign)
- 실행결과는 아래와 같다.
<zip object at 0x7fb96d55f840>
4
True
<zip object at 0x7fb96d55f8c0>
7
False
<zip object at 0x7fb96d55f900>
12
True
<zip object at 0x7f2e7edd67c0>
1
False
<zip object at 0x7f2e7edd6840>
2
False
<zip object at 0x7f2e7edd6880>
3
True
- 진짜 많이 배워갑니다.
'Programmers > Python' 카테고리의 다른 글
| [프로그래머스] [Python] 가장 큰 수 찾기 (0) | 2022.11.27 |
|---|---|
| [프로그래머스] [Python] 외계행성의 나이 (0) | 2022.11.26 |
| [프로그래머스] [Python] 배열 회전시키기 (0) | 2022.11.26 |
| [프로그래머스] [Python] 자릿수 더하기 (0) | 2022.11.14 |
| [프로그래머스] [Python] 점의 위치 구하기 (0) | 2022.11.14 |