컨트롤 제트 Lv. 0

박영준·2023년 5월 11일
0

코딩테스트

목록 보기
80/300

문제 설명

숫자와 "Z"가 공백으로 구분되어 담긴 문자열이 주어집니다. 문자열에 있는 숫자를 차례대로 더하려고 합니다. 이 때 "Z"가 나오면 바로 전에 더했던 숫자를 뺀다는 뜻입니다. 숫자와 "Z"로 이루어진 문자열 s가 주어질 때, 머쓱이가 구한 값을 return 하도록 solution 함수를 완성해보세요.

class Solution {
    public int solution(String s) {
        int answer = 0;
        return answer;
    }
}

제한 사항

  • 1 ≤ s의 길이 ≤ 200
  • -1,000 < s의 원소 중 숫자 < 1,000
  • s는 숫자, "Z", 공백으로 이루어져 있습니다.
  • s에 있는 숫자와 "Z"는 서로 공백으로 구분됩니다.
  • 연속된 공백은 주어지지 않습니다.
  • 0을 제외하고는 0으로 시작하는 숫자는 없습니다.
  • s는 "Z"로 시작하지 않습니다.
  • s의 시작과 끝에는 공백이 없습니다.
  • "Z"가 연속해서 나오는 경우는 없습니다.

입출력 예

입출력 예 설명

  • 입출력 예 #1

    • 본문과 동일합니다.
  • 입출력 예 #2

    • 10 + 20 + 30 + 40 = 100을 return 합니다.
  • 입출력 예 #3

    • "10 Z 20 Z 1"에서 10 다음 Z, 20 다음 Z로 10, 20이 지워지고 1만 더하여 1을 return 합니다.

해결법

방법 1

class Solution {
    public int solution(String s) {
    
        String[] sArray = s.split(" ");		// 공백 제거
        
        int result = 0;
        
        for (int i = 0; i < sArray.length; i++) {
            if (sArray[i].equals("Z")) {		// Z 가 포함된 인덱스의 경우
                result -= Integer.parseInt(sArray[i - 1]);	// Z 가 포함된 인덱스-1 를 제거한다
                continue;
            }
            result += Integer.parseInt(sArray[i]);		// 나머지는 모두 더해준다.
        }
        return result;
    }
}
  • split(" ")

  • equals("Z")

  • -=

  • Integer.parseInt()

방법 2

public int solution(String s) {

	int answer = 0;
        
    String[] array = s.split(" ");		// 공백 제거
        
    for (int i = 0; i < array.length; i++) {
        if (array[i].equals("Z")) {		// Z 가 포함된 인덱스의 경우
            array[i-1] = "0";	// Z 가 포함된 인덱스-1 를 제거한다
            array[i] = "0";	// Z 가 포함된 인덱스 를 제거한다
        }
    }

    for (int i = 0; i < array.length; i++) {
        answer += Integer.parseInt(array[i]);		// 배열 array 의 인덱스를 모두 더한다.
    }
    
    return answer;
}
  • "Z"가 나오면 그 앞에 값과 "Z"를 "0"으로 만들어버린다.

방법 3

public int solution(String s) {

	int answer = 0;
        
    String[] array = s.split(" ");		// 공백 제거
        
    for (int i = 0; i < array.length; i++) {
        if (array[i].equals("Z")) {		// Z 가 포함된 인덱스의 경우
            answer -= Integer.parseInt(array[i - 1]);		// Z 가 포함된 인덱스-1 를 제거한다
		} else {
        	answer += Integer.parseInt(array[i]);		// Z 가 포함되지않은 인덱스 를 추가한다
        }
    }

    return answer;
}

컨트롤 제트

profile
개발자로 거듭나기!

0개의 댓글