본문 바로가기

IT/코딩테스트

[프로그래머스][코딩테스트][연습코딩][기초 트레이닝]수 조작하기 1

문제는 이렇다

 

문제 설명
정수 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"로 이루어진 문자열입니다.
입출력 예

n control result
0 "wsdawsdassw" -1


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

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

 

 

첨엔 for 문으로 control[i]부터 쭉 문자열 비교를 해야하나 생각했다가

단순 덧셈 뺄셈 연산만 수행되는 거라면 딱히 순서 구분 없이 한 방에 "w", "a", "s", "d" 문자 개수를 세서 그에 대응되는 값을 곱해주면 될 것 같다는 결론에 도달해서, 내 코드는 아래와 같다.

def solution(n, control):
    answer = 0 + n
    
    ctrl_num = [1,-1,10,-10]
    ctrl_direction = ["w","s","d","a"]
        
    for i in range(4):
        answer += (control.count(ctrl_direction[i]) * ctrl_num[i])
    return answer

 

사실 answer = 0에 n을 안 더하고 그냥 제출했다가 한번 빠꾸먹은 것은 안비밀

기출문제로 쭉 할까 싶었다가 들이는 공이 너무 드는데다 어차피 기초 함수는 익혀야 해서 back to the basic 하기로 한것도 안비밀

'IT > 코딩테스트' 카테고리의 다른 글

[PCCE 기출문제] 9번 / 이웃한 칸  (2) 2024.10.09