[프로그래머스] LV0. 수 조작하기 1

윤인경·2023년 8월 6일
0

코딩테스트

목록 보기
29/38
post-thumbnail

문제 설명

정수 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"로 이루어진 문자열입니다.

입출력 예

ncontrolresult
0"wsdawsdassw"-1

입출력 예 설명
입출력 예 #1

  • 수 n은 control에 따라 다음과 같은 순서로 변하게 됩니다.
  • 0 → 1 → 0 → 10 → 0 → 1 → 0 → 10 → 0 → -1 → -2 → -1
  • 따라서 -1을 return 합니다.

내가 작성한 코드

def solution(n, control):
    answer = n + control.count('w') - control.count('s') + 10 * control.count('d') - 10 * control.count('a')
    return answer

코드 간단 소개

  • 각 알파벳마다 개수를 카운트한다. .count()
  • 알파벳마다 주어진 값에 따라 +1, -1, 10, -10을 곱해서 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])
def solution(n, control):
    answer = n
    c = { 'w':1, 's':-1, 'd':10, 'a':-10}
    for i in control:
        answer += c[i]
    return answer
  • 위 두 코드는 딕셔너리를 사용한다.
  • for 문을 돌면서 control에 있는 문자를 보고 해당하는 값을 더한다.
  1. 에서 딕셔너리를 만드는 방법은 dict()함수를 사용한다.
    또 dict()안에 zip()으로 ['w','s','d','a'], [1,-1,10,-10]을 묶어 { 'w':1, 's':-1, 'd':10, 'a':-10}이렇게 나열되도록 한다.
    따라서 2.의 c와 key가 같다.
profile
코딩 공부 및 프로젝트 정리

0개의 댓글