-
[Java 자바] 프로그래머스 Lv 0 - 컨트롤 제트Study/Java 2024. 11. 1. 12:01728x90반응형
목차
1. 문제 설명
728x90문제 설명
숫자와 "Z"가 공백으로 구분되어 담긴 문자열이 주어집니다.
문자열에 있는 숫자를 차례대로 더하려고 합니다.
이 때 "Z"가 나오면 바로 전에 더했던 숫자를 뺀다는 뜻입니다.
숫자와 "Z"로 이루어진 문자열 s가 주어질 때,
머쓱이가 구한 값을 return 하도록 solution 함수를 완성해보세요.제한사항
- 1 ≤ s의 길이 ≤ 200
- -1,000 < s의 원소 중 숫자 < 1,000
- s는 숫자, "Z", 공백으로 이루어져 있습니다.
- s에 있는 숫자와 "Z"는 서로 공백으로 구분됩니다.
- 연속된 공백은 주어지지 않습니다.
- 0을 제외하고는 0으로 시작하는 숫자는 없습니다.
- s는 "Z"로 시작하지 않습니다.
- s의 시작과 끝에는 공백이 없습니다.
- "Z"가 연속해서 나오는 경우는 없습니다.
2. 입출력 예시
입출력 예시
#1
본문과 동일합니다.
#2
10 + 20 + 30 + 40 = 100을 return 합니다.
#3"10 Z 20 Z 1"에서 10 다음 Z, 20 다음 Z로 10, 20이 지워지고 1만 더하여 1을 return 합니다.
3. 문제 풀이
반응형문제 풀이
1. 문자열 s를 공백을 기준으로 나누어서 배열 str에 넣는다.
2. for 문을 통해서 str[i]의 값이 숫자라면, answer에 그 값을 누적하여 더한다.
3. for 문을 통해서 str[i]의 값이 "Z"라면, answer의 값에서 그 앞에 값(str[i-1])을 빼준다.
4. 최종 answer 값을 반환한다.
class Solution { public int solution(String s) { int answer = 0; String[] str = s.split(" "); // 숫자라면, 더하기 for(int i=0; i<str.length; i++){ if(str[i].matches("-?\\d*")){ answer += Integer.parseInt(str[i]); } } // Z라면, 앞에 값 빼기 for(int i=1; i<str.length; i++){ if(str[i].matches("Z")){ answer -= Integer.parseInt(str[i-1]); } } return answer; } }
메모
.matches(정규식) : 문자열이 정규 표현식과 일치하는지 여부를 판별
? : 앞의 표현식이 없거나 최대 한개만 있다. (ex. -? 는 -가 있을수도 없을수도 있다. -100, 100)
\d : 0~9사이의 숫자
* : 앞의 표현식이 없거나 있거나(여러개) (ex. a* 는 a, aa, aaaaaa)
\\ : 자바에서 \ 자체는 특수문자로 취급하기 때문에, 정규식 기호는 \\ 이렇게 작성해야 함 (ex. \\d)
728x90반응형'Study > Java' 카테고리의 다른 글
[Java 자바] 프로그래머스 Lv 0 - 중복된 문자 제거 (0) 2024.11.02 [Java 자바] 프로그래머스 Lv 0 - 배열 원소의 길이 (0) 2024.11.01 [Java 자바] 프로그래머스 Lv 0 - 소인수분해 (1) 2024.10.31 [Java 자바] 프로그래머스 Lv 0 - 숨어있는 숫자의 덧셈 (1) (0) 2024.10.31 [Java 자바] 프로그래머스 Lv 0 - 문자열 정렬하기 (1) (1) 2024.10.30