반응형
(JAVA)
0. 문제 및 입출력 예제
문제
문자열 my_string이 매개변수로 주어집니다.
my_string안의 모든 자연수들의 합을 return하도록 solution 함수를 완성해주세요.
제한사항
1 ≤ my_string의 길이 ≤ 1,000
my_string은 소문자, 대문자 그리고 한자리 자연수로만 구성되어있습니다.
입출력 예
입출력 예 #1
"aAb1B2cC34oOp"안의 한자리 자연수는 1, 2, 3, 4 입니다.
따라서 1 + 2 + 3 + 4 = 10 을 return합니다.
입출력 예 #2
"1a2b3c4d123Z"안의 한자리 자연수는 1, 2, 3, 4, 1, 2, 3 입니다.
따라서 1 + 2 + 3 + 4 + 1 + 2 + 3 = 16 을 return합니다.
1. 문제 분석
- 우선 문자열에서 숫자만 뽑는다 -> 숫자를 제거한다.
- 남은숫자를 더해준다.
2. 방법
👆 [ String 배열 ]
class Solution {
public int solution(String my_string) {
int answer = 0;
String[] arr = my_string.replaceAll("[^0-9]", "").split("");
for(int i = 0; i<arr.length; i++){
answer += Integer.parseInt(arr[i]);
}
return answer;
}
}
처음에는 String 배열을 반복돌면서 answer 값에 더해주는 방식으로 진행했다.
하지만 하다보면서 for문을 돌면서 형변환을 해줘야할까? 싶어서 처음부터 Int 배열로 만들 수 있는 방식을 생각해보았다.
✌ [ Int 배열 ]
class Solution {
public int solution(String my_string) {
int answer = 0;
String[] arr = my_string.replaceAll("[^0-9]", "").split("");
int[] intArr = new int[arr.length];
int i = 0;
for (String s : arr){
intArr[i] = Integer.parseInt(s);
i++;
}
for(int num : intArr){
answer += num;
}
return answer;
}
}
그런데 작성하다보니 굳이..? 라는 생각도 들었고 ... 어떤게 좋은 방식인지는 잘 모르겠다고 생각했다.
작성하고 다른 사람들의 풀이를 보면서 Stream 을 사용해서 푸는 방식도 있길래 코드를 보면서 나도 Stream 을 사용해서 풀어볼 필요도 있다고 느꼈다..
👍 [ Stream 사용 ]
class Solution {
public int solution(String myString) {
return myString.chars().mapToObj(i -> (char) i).filter(Character::isDigit).map(String::valueOf).mapToInt(Integer::valueOf).sum();
}
}
3. 느낀점
조금 더 방법을 다양하게 생각해보면서 해볼 필요가 있다.
반응형
'알고리즘 > 프로그래머스:LV00' 카테고리의 다른 글
[LV00] n의 배수 고르기 (0) | 2023.11.24 |
---|---|
[LV00] 문자열 계산하기 (0) | 2023.11.23 |
[LV00] 숨어있는 숫자의 덧셈(1) (1) | 2023.11.04 |
[LV00] 문자열 정렬하기(1) (0) | 2023.11.04 |
[LV00] 모음 제거 (1) | 2023.11.02 |