코딩테스트 - 프로그래머스/Lv. 0

[77] JAVA 수 조작하기 1

유혁스쿨 2023. 11. 29. 16:51
728x90
반응형

문제 설명

정수 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
 

입출력 예 #1

  • 수 n은 control에 따라 다음과 같은 순서로 변하게 됩니다.
  • 0 → 1 → 0 → 10 → 0 → 1 → 0 → 10 → 0 → -1 → -2 → -1
  • 따라서 -1을 return 합니다.

[나의 풀이]

import java.util.Arrays;
class Solution {
	public int solution(int n, String control) {
    	return n + Arrays.stream(control.split(""))
                .mapToInt(el -> el.equals("w") ? 1 : el.equals("s") ? -1 : el.equals("d") ? 10 : -10)
                .sum();
    }
}

 

[다른 풀이]

import java.util.Arrays;
class Solution {
	public int solution(int n, String control) {
    	return control.chars()
        .reduce(n, (l, r) -> l + (r=='w' ? 1 : r=='s' ? -1 : r=='d' ? 10 : -10));
    }
}

reduce함수를 통해 값을 누적시킨다.

control배열에 구성된 모든 요소들을 순차적으로 가르킨다.

현재 가르키는 요소 r이 조건이 맞을 경우 해당하는 값들을 초기값 l에 누적해서 더한다.

루프가 끝날때까지 반복한뒤 루프가 종료되면 l을 반환한다.

이때 l의 초기값은 n이다.

 

728x90
반응형