문제 설명
정수 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 |
풀이
- 첫 번째 방법
import java.util.*;
class Solution {
public int solution(int n, String control) {
int answer = 0;
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("w", 1);
map.put("s", -1);
map.put("d", 10);
map.put("a", -10);
for(int i=0; i<control.length(); i++) {
String str = control.substring(i, i+1);
for(Map.Entry<String, Integer> e : map.entrySet()) {
if(e.getKey().equals(str)) answer = answer + e.getValue();
}
}
return answer;
}
}
- 두 번째 방법
import java.util.*;
class Solution {
public int solution(int n, String control) {
int answer = n;
for(char ch : control.toCharArray()) {
switch(ch) {
case 'w': answer += 1; break;
case 's': answer -= 1; break;
case 'd': answer += 10; break;
case 'a': answer -= 10; break;
}
}
return answer;
}
'Coding Test > 프로그래머스[JAVA]' 카테고리의 다른 글
[프로그래머스 Lv0.] 181937번 n의 배수 (JAVA) (1) | 2024.10.02 |
---|---|
[프로그래머스 Lv0.] 181929번 원소들의 곱과 합 (JAVA) (0) | 2024.10.02 |
[프로그래머스 Lv0.] 181915번 글자 이어 붙여 문자열 만들기 (JAVA) (1) | 2024.09.26 |
[프로그래머스 Lv0.] 181911번 부분 문자열 이어 붙여 문자열 만들기 (JAVA) (1) | 2024.09.26 |
[프로그래머스 Lv0.] 181908번 접미사인지 확인하기 (JAVA) (0) | 2024.09.26 |