Level. 0
문제
정수 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"로 이루어진 문자열입니다.
풀이1.
class Solution {
public int solution(int n, String control) {
int answer = n ;
for(char c : control.toCharArray()){
switch(c){
case 'w':
answer += 1;
break;
case 's':
answer -= 1;
break;
case 'd':
answer += 10;
break;
case 'a':
answer -= 10;
break;
default:
break;
}
}
return answer;
}
}
풀이2. stream
import java.util.HashMap;
import java.util.stream.*;
import java.util.Arrays;
class Solution {
public int solution(int n, String control) {
HashMap<Character, Integer> map = new HashMap<>();
map.put('w', 1);
map.put('s', -1);
map.put('d', 10);
map.put('a', -10);
return IntStream.range(0, control.length()).map(i -> map.get(control.charAt(i))).sum()+n;
}
}
https://school.programmers.co.kr/learn/courses/30/lessons/181926
'Algorithm > Programers - Java' 카테고리의 다른 글
[프로그래머스(Java)] 정수 찾기 / anyMatch() (0) | 2024.02.26 |
---|---|
[프로그래머스(Java)] n 번째 원소부터 / Arrays.copyOfRange() (0) | 2024.02.26 |
[프로그래머스(Java)] 붕대 감기 (0) | 2024.02.11 |
[프로그래머스(Java)] 접미사인지 확인하기 / endsWith(), startsWith() (0) | 2024.02.04 |
[프로그래머스(Java)] 첫 번째로 나오는 음수 / findFirst(), orElse() (0) | 2024.02.04 |