2024. 6. 16. 21:24ㆍ파이썬_알고리즘(코딩테스트)/level0

내가 제출한 코드
def solution(n, control):
for i in control:
if i == "w":
n += 1
elif i == "s":
n -= 1
elif i == "d":
n += 10
elif i == "a":
n -= 10
return n
control 문자열의 각 문자 i에대해 반복문을 실행한다.
만약 i가 'w'라면 n을 1 증가시키고.
i가 's'라면 n을 1 감소시키고,
i가 'd'라면 n을 10 증가시키고,
i가 'a'라면 n을 10 감소시킨다.
입력받은 control 문자열에 따라 n의 값을 변경하여 마지막으로 변경된 n값을 반환한다.
다른 사람이 제출한 코드
def solution(n, control):
key = dict(zip(['w','s','d','a'],[1,-1,10,-10]))
return n + sum(key[c] for c in control])
- key = dict(zip(['w','s','d','a'],[1,-1,10,-10]))
- zip(['w','s','d','a'],[1,-1,10,-10]) : 두 리스트를 쌍으로 묶어 튜플을 생성한다. 결과는 [('w', 1), ('s', -1), ('d', 10), ('a', -10)]가 된다.
- dict() : 이 튜플 리스트를 딕셔너리로 변환하여 { 'w': 1, 's': -1, 'd': 10, 'a': -10 }을 생성한다.
- key : 각 문자가 가지는 값을 저장하는 딕셔너리가 된다.
- return n + sum(key[c] for c in control)
- key[c] for c in control : control 문자열의 각 문자 c에 대해 key[c] 값을 생성한다.
- sum() : 생성된 값을 모두 합산한다.
- 최종적으로 n에 합산된 값을 더하여 반환한다.
zip과 딕셔너리
- 두 개의 서로 다른 리스트에서 하나를 key로 하고 다른 하나를 value로 해서 딕셔너리로 표현하면 좋을 때가 종종 있다.
# 예시
name = ['merona', 'gugucon']
price = [500, 1000]
icecream = dict(zip(name, price))
print(icecream)
# 결과
# {'merona': 500, 'gugucon': 1000}
참고글
07) zip과 딕셔너리
[TOC] ## 두 개의 리스트를 묶기 zip은 두 개의 리스트를 서로 묶어줄 때 사용합니다. ``` name = ['merona', 'gugucon'] price = …
wikidocs.net
'파이썬_알고리즘(코딩테스트) > level0' 카테고리의 다른 글
| level0_이어 붙인 수 (0) | 2024.06.19 |
|---|---|
| level0_마지막 두 원소 (0) | 2024.06.17 |
| level0_카운트 업 (0) | 2024.06.15 |
| level0_글자 이어 붙여 문자열 만들기 (0) | 2024.06.13 |
| level0_문자열의 뒤의 n글자 (2) | 2024.06.12 |