코테/프로그래머스

[프로그래머스/Lv. 0] 숨어있는 숫자의 덧셈 (2)

imname1am 2023. 2. 9. 17:15
반응형

내 코드 (틀림)

import java.util.*;

class Solution {
    public int solution(String my_string) {
        int answer = 0;
        
        // 알파벳 먼저 띄어쓰기로 replaceAll하고 앞뒤 공백 제거
        my_string = my_string.replaceAll("[^0-9]", " ").replaceAll("  ", " ").trim();
        System.out.print(my_string);
        
        ArrayList<String> list = new ArrayList<>(Arrays.asList(my_string.split(" ")));
        
        for(String i : list) {
            int j = Integer.parseInt(i);
            if((0 <= j) && (j <= 1000)) answer += j;
        }
        
        return answer;
    }
}

설마설마했는데 실패...ㅎ

공백 문자에 대한 처리를 제대로 못 해줬기 때문에 실패한 것 같았다.

그래서 두 칸을 차지하는 공백을 replaceAll하는 것도 빼주고...

그래서 다시 풀어봄..

 

내 코드 (정답)

import java.util.*;

class Solution {
    public int solution(String my_string) {
        int answer = 0;
        
        my_string = my_string.replaceAll("[^0-9]", " ").trim();
        ArrayList<String> list = new ArrayList<>(Arrays.asList(my_string.split(" ")));
        
        for(String i : list) {
            if(i.equals("")) {
                continue;
            }
            else {
                answer += Integer.parseInt(i.trim());                
            }
        }
        
        return answer;
    }
}

공백에 대한 처리도 해주고,

숫자 양 옆에 있는 공백도 생각해서 trim() 해주고 그랬더니 통과했다ㅠ..

 

다른 코드

class Solution {
    public int solution(String my_string) {
        int answer = 0;

        String[] str = my_string.replaceAll("[a-zA-Z]", " ").split(" ");
        
        for(String s : str) {
        	if(!s.equals("")) answer += Integer.valueOf(s);
        }

        return answer;
    }
}

이리 간단하게 푸실 수가....🤦‍♀️

Integer.valueOf() 대신 Integer.parseInt() 써도 된다.


(참고)

- 문자열 공백 제거

 

Java - 문자열 공백제거 (trim, replace)

문자열의 공백을 제거하는 방법을 소개합니다. String.trim()은 문자열 앞 뒤의 공백을 제거합니다. 문자열 중간에 있는 공백은 제거하지 못합니다. replace()를 이용하면 문자열 가운데 있는 공백을

codechacha.com

 

[Java] 문자열에서 공백 제거하기

지난 번에는 문자열 앞뒤의 공백을 제거하는 방법을 알아보았습니다. [Java] 문자열 앞뒤 공백 제거하기 (trim() vs strip() 차이) 이번에는 문자열 전체에서 모든 공백을 제거하는 방법을 소개합니다.

hianna.tistory.com

- 문제 힌트

 

숨어있는 숫자의 덧셈 (2) - Java [프로그래머스 입문]

❤️ Problem 더보기 문제 문자열 my_string이 매개변수로 주어집니다. my_string은 소문자, 대문자, 자연수로만 구성되어있습니다. my_string안의 자연수들의 합을 return하도록 solution 함수를 완성해주세

gyulpiki.tistory.com

- Integer.valueOf() VS Integer.parseInt()

 

Java Integer.valueOf VS Integer.parseInt 어떤것을 써야할까?

자바에서 `10`과 같은 문자열을 숫자 값으로 변형해서 계산해야 할 때, 변환 방법에 2가지가 있으므로 무얼 써야 하지 하고 고민을 한적 있으신가요? 대충 익숙한 Integer.parseInt를 쓴 거 같은데, 그

sayit.tistory.com

 

[Java] valuOf()와 parseInt() 차이

자바 코딩을 하다보면 문자열 형태로 표현된 정수를 정수 타입 값으로 변환해야할 경우가 있습니다. 이 경우 vlueOf() 메서드와 parseInt() 메서드를 사용하게 됩니다. int number1 = Integer.valueOf("100"); Sys

soft.plusblog.co.kr

 

반응형