| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- dfs
- 이코테
- 그래프
- 월간 코드 챌린지 시즌1
- 알고리즘
- 깃허브
- 1932
- 정수 삼각형
- 15686
- 백준
- 토마토
- 프로그래멋
- Summer/Winter Coding(~2018)
- 자바
- Lv2
- BFS
- 프로그래머스
- 조합
- 구현
- Java
- 그래프탐색
- Python
- DP
- 알고리즘고득점Kit
- GIT
- 깃허브 프로필
- 다익스트라
- 완전탐색
- 분할정복
- 정렬
- Today
- Total
갱스터하우스
[Python] Lv1.음양 더하기 본문
https://programmers.co.kr/learn/courses/30/lessons/76501
코딩테스트 연습 - 음양 더하기
어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 re
programmers.co.kr
문제 설명
어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.
제한사항
- absolutes의 길이는 1 이상 1,000 이하입니다.
- absolutes의 모든 수는 각각 1 이상 1,000 이하입니다.
- signs의 길이는 absolutes의 길이와 같습니다.
- signs[i] 가 참이면 absolutes [i]의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.
나의 접근 방법 및 풀이
처음에 문제를 딕셔너리를 이용해서 풀어야 하나 싶었지만 뭔가 복잡해지는 느낌이 들어서 for() 문과 if() 문을 이용해서 풀었다.
signs의 길이만큼 for()문을 반복하며 True일 경우에는 바로 리스트에 추가하고, False일 경우에는 음수이므로 '-'를 붙여서 추가했다.
sum()을 이용하려고 리스트에 추가하는 방식을 선택했는데, 변수에다가 더하는 것도 괜찮은 것 같다.(이것도 시간 복잡도 차이가 나려나...?)
def solution(absolutes, signs):
answer = []
for i in range(len(signs)):
if signs[i] == True:
answer.append(absolutes[i])
else:
answer.append(-absolutes[i])
return sum(answer)
다른 풀이
def solution(absolutes, signs):
return sum(absolutes if sign else -absolutes for absolutes, sign in zip(absolutes, signs))
사실 문제를 보고 간단해 보이는 데 for() 문과 if() 문을 덕지덕지(?) 풀면 성공하더라도 약간의 찜찜함이 남아있다. '뭔가 한 줄로 가능할 것 같은데?', '코드를 줄일 수 있을 것 같은데?'라는 생각과 함께.
역시나! 한 줄로 풀 수 있었다.
위에서 dictionary를 사용하고 싶었던 이유가 사실은 zip()이 생각이 안 나서 그랬다는 것을 알 수 있었다.
zip()을 이용해 absolutes와 signs를 짝을 이루어 준 다음, if()문을 이용해서 True이면 absolutes를 False이면 -absolutes를 반환하고 sum()을 이용해서 최종적으로 결과를 return 한다.
'코테 문제 > 프로그래머스' 카테고리의 다른 글
| [Python] Lv1.K번째 수 (0) | 2022.04.09 |
|---|---|
| [Python] Lv1.정수 내림차순으로 배치하기 (0) | 2022.04.09 |
| [Python] Lv1.크레인 인형뽑기 게임 (0) | 2022.04.08 |
| [Python] Lv1.가운데 글자 가져오기 (0) | 2022.04.08 |
| [Python] Lv1.나누어 떨어지는 숫자 배열 (0) | 2022.04.08 |