코딩테스트

[programmers] JAVA_0단계 수 조작하기 1

congs 2024. 6. 19. 23:25

수 조작하기 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));
    }
}
  1. control.chars() 
    • 문자열 control을 각 문자의 유니코드 값을 나타내는 정수 스트림으로 변환
    • 예) 문자열 "wsda" = 정수 스트림 [119, 115, 100, 97]
  2. reduce(n, (acc, c) -> ...)
    • reduce : 스트림의 각 요소를 차례대로 처리 -> 단일 결과 도출
    • n : 초기값
    • acc : 누적된 값
    • c : 현재 처리중인 요소