코딩_Python(Level.0)

[Level.0] 수 조작하기

Hong's_Computer 2026. 3. 8. 19:36
반응형

문제 설명: 정수 n과 문자열 control이 주어집니다. control은 "w", "a", "s", "d"의 4개의 문자로 이루어져 있으며, control의 앞에서부터 순서대로 문자에 따라 n의 값을 바꿉니다.

  • "w" : n이 1 커집니다.
  • "s" : n이 1 작아집니다.
  • "d" : n이 10 커집니다.
  • "a" : n이 10 작아집니다.
  • 위 규칙에 따라 n을 바꿨을 때 가장 마지막에 나오는 n의 값을 return 하는 solution 함수를 완성해 주세요.

제한사항

  • -100,000 ≤ n ≤ 100,000
  • 1 ≤ control의 길이 ≤ 100,000
  • control은 알파벳 소문자 "w", "a", "s", "d"로 이루어진 문자열입니다.

문제 해결

def solution(n, control):
    dc = ['w', 's', 'd', 'a']
    dv = [1, -1, 10, -10]
    for con in control:
       n += dv[dc.index(con)]
    return n

def solution(n, control):
    dc = {'w':1, 's':-1, 'd':10, 'a':-10}
    return n + sum(dc[con] for con in control)

 

주석: 두번째 코드가 효율성과 가독성을 모두 잡은 코드, .index()는 다시 값을 모두 비교하기 때문에 .index만 O(4)임 종합 O(4N) = O(N)이다.

반응형