반응형
문제 설명: 정수 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)이다.
반응형
'코딩_Python(Level.0)' 카테고리의 다른 글
| [Level.0] 원소들의 곱과 합 (0) | 2026.03.08 |
|---|---|
| [Level.0] 문자열의 앞의 n글자 (0) | 2026.03.08 |
| [Level.0] n개 간격의 원소들 (0) | 2026.03.08 |
| [Level.0] 문자 리스트를 문자열로 변환하기 (0) | 2026.03.08 |
| [Level.0] 문자열 곱하기 (0) | 2026.03.08 |