inblog logo
|
silver
    알고리즘문제풀기

    [알고리즘문제풀기] 숨어있는 숫자의 덧셈 (2)

    silver's avatar
    silver
    Jan 11, 2025
    [알고리즘문제풀기] 숨어있는 숫자의 덧셈 (2)
    Contents
    문제내가 작성한 오답내가 작성한 정답다른 사람들의 정답Integer.valueOf() vs Integer.parseInt()

    문제

    school.programmers.co.kr
    https://school.programmers.co.kr/learn/courses/30/lessons/120864

    내가 작성한 오답

    : 연속된 수는 하나의 숫자로 간주합니다. → 전제를 확인하지 못했다.
    class Solution { public int solution(String my_string) { int answer = 0; for(char c : my_string.toCharArray()){ if(Character.isDigit(c)){ answer += (int)(c-48); } } return answer; } }
    notion image
    import java.util.*; class Solution { public int solution(String my_string) { int answer = 0; String[] nums = my_string.replaceAll("[^\\d]+",",").split(","); for(String num :nums){ answer += Integer.parseInt(num); } return (int)answer; } }

    내가 작성한 정답

    import java.util.*; class Solution { public int solution(String my_string) { int answer = 0; String[] nums = my_string.replaceAll("[^\\d]+",",").split(","); for(String num :nums){ if(num.isEmpty()){ continue; } answer += Integer.parseInt(num); } return answer; } }
    💡
    정규식
    \\d : 숫자
    ^ : 아님
    + : 하나이상 반복되는 패턴
    → [^\\d]+ : 숫자가 아닌 하나이상 반복되는 패턴이면 ,로 대체해라
     
    정규식
    설명
    예제
    \\d+
    숫자로 이루어진 부분을 찾음
    "abc123de45" → ["123", "45"]
    [^a-zA-Z]+
    알파벳이 아닌 문자 기준으로 split
    "abc123de45" → ["abc", "de"]
    \\s+
    공백(스페이스, 탭, 개행 등) 기준으로 split
    "Hello   World" → ["Hello", "World"]
     
    // 정규식을 이용하면 그냥 쪼갤 때 문자로 쪼개면 되기 때문에 replaceAll을 사용할 필요가 없음 import java.util.*; class Solution { public int solution(String my_string) { int answer = 0; String[] nums = my_string.split("[^\\d]+"); for(String num :nums){ if(num.isEmpty()){ continue; } answer += Integer.parseInt(num); } return answer; } }

    다른 사람들의 정답

    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() vs Integer.parseInt()

    구분
    Integer.valueOf(String s)
    Integer.parseInt(String s)
    반환 타입
    Integer 객체
    int 기본형
    메모리 사용
    객체(오토박싱 시 성능 저하 가능)
    기본형(더 가벼움)
    캐싱 여부
    ✅ (-128 ~ 127 범위 캐싱)
    ❌ (항상 새로운 값)
    성능
    객체 캐싱 덕분에 가벼울 수도 있음
    무조건 가볍고 빠름
    사용 예
    Integer obj = Integer.valueOf("123");
    int num = Integer.parseInt("123");
     
    Share article

    silver

    RSS·Powered by Inblog