Study with me/프로그래머스 L0 마스터하기

프로그래머스 - L0 수조작하기1 // String → char sequence

외계나무 2023. 12. 2. 10:36

프로그래머스 - level 0 수 조작하기 1

 

난 charAt()으로 풀었는데 다르게 풀고 싶어서 참고하려고 가져온 타인의 풀이들

 

str.toCharArray()

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;
                default:break;
            }
        }

        return answer;
    }
}
class Solution {
    public int solution(int n, String control) {
        for(char c : control.toCharArray()){
            n += c == 'w' ? 1 : c == 's' ? -1 : c == 'd' ? 10 : -10;
        }
        return n;
    }
}

→ w s d a 4개의 문자로만 이루어져 있음을 기억했다면 나올 수 있었을 풀이.... 힝9

 

 

str.chars().reduce()

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));
    }
}

 

chars()

  • String 클래스의 메서드로, 문자열을 IntStream으로 변환합니다.
  • 각 문자는 해당하는 ASCII 또는 유니코드 코드 포인트 값으로 매핑됩니다.
  • IntStream을 통해 문자열의 각 문자를 처리하거나 연산할 수 있습니다.
String str = "Hello"; IntStream intStream = str.chars();

 

reduce()

  • 스트림의 요소를 하나로 줄이는 연산을 수행합니다.
  • 주어진 연산을 사용하여 요소를 반복적으로 결합하여 최종 결과를 생성합니다.
  • 초기값(또는 식별 요소), 각 요소와 초기값을 사용하여 이전 결과와 새로운 요소를 결합하는 연산을 제공해야 합니다.
List<String> words = Arrays.asList("Hello", "World", "Java");
int totalLength = words.stream()
			.map(String::length) 
    			.reduce(0, (partialResult, length) -> partialResult