수 조작하기 1
풀이
- for문을 이용하여 charAt(i)로 순서대로 계산하는 방법
class Solution {
public int solution(int n, String control) {
for (int i = 0; i < control.length(); i++) {
// for (char c : control.toCharArray()) 을 이용하여 char c없이도 가능
char c = control.charAt(i);
switch (c) {
case 'w':
n += 1;
break;
case 's':
n -= 1;
break;
case 'd':
n += 10;
break;
case 'a':
n -= 10;
break;
}
}
return n;
}
}
- 람다 스트림을 이용한 방법
class Solution {
public int solution(int n, String control) {
return control.chars().reduce(n, (acc, c) -> acc + (c == 'w' ? 1 : c == 's' ? -1 : c == 'd' ? 10 : -10));
}
}
- control.chars()
- 문자열 control을 각 문자의 유니코드 값을 나타내는 정수 스트림으로 변환
- 예) 문자열 "wsda" = 정수 스트림 [119, 115, 100, 97]
- reduce(n, (acc, c) -> ...)
- reduce : 스트림의 각 요소를 차례대로 처리 -> 단일 결과 도출
- n : 초기값
- acc : 누적된 값
- c : 현재 처리중인 요소
'코딩테스트' 카테고리의 다른 글
[programmers] JAVA_0단계 중앙값 구하기 (0) | 2024.06.19 |
---|---|
[programmers] JAVA_0단계 수 조작하기 2 (0) | 2024.06.19 |
[programmers] JAVA_0단계 홀짝에 따라 다른 값 반환하기 (0) | 2024.06.18 |
[programmers] JAVA_0단계 문자열 앞의 n글자 (substring 예제) (0) | 2024.06.18 |
[programmers] JAVA_0단계 이어 붙인 수 (0) | 2024.06.18 |