level0_수 조작하기1

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}

 

참고글 

https://wikidocs.net/92539

 

07) zip과 딕셔너리

[TOC] ## 두 개의 리스트를 묶기 zip은 두 개의 리스트를 서로 묶어줄 때 사용합니다. ``` name = ['merona', 'gugucon'] price = …

wikidocs.net