프로그래머스_숫자 문자열과 영단어 JAVA

2025. 1. 27. 01:50·알고리즘/알고리즘 풀이
반응형

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

이번에 풀 문제는 '숫자 문자열과 영단어'이다.

2021 카카오 채용연계형 인턴십 문제라고 한다.

그리고 이미 풀었던 문제라 과거 코드가 남아있었다. 

 

과거 코드

class Solution {
    public int solution(String s) {
        String[] numbers = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};

        for(int i = 0; i < numbers.length; i++)
        {
            String num = numbers[i];
            if(s.indexOf(num) > -1)
            {
                s = s.replaceAll(num, i+"");
            }
        }
        
        return Integer.parseInt(s);
    }
}

 처음으로 과거 코드가 마음에 들었다..!

문제를 잘 파악하고 푼 것 같다.

문제는 숫자를 영어로 말하는 부분을 숫자로 변경하는 문제였다.

 

현재 코드

class Solution {
    public int solution(String s) {
    String[] numbers = {"zero", "one", "two", "three", "four", "five"
                        ,"six", "seven", "eight", "nine" };

    for(int i = 0; i < numbers.length; i++) {
        if(s.contains(numbers[i])) {
            s = s.replaceAll(numbers[i], String.valueOf(i));
        }
    }
    return Integer.parseInt(s);
    }
}

s.replaceAll 안에 숫자인 i 부분을 문자열으로 바꿔주는 코드만 수정했다.

i+""< 이 코드는 의도가 불문명할뿐더러 성능에도 좋지가 않다.

눈에는 단순한 코드로 보이지만 내부적으로 StringBuilder를 생성하고 문자열 결합 연산을 수행하기 때문에 불필요한 오버헤드와 메모리 사용을 초래할 수 있다.

그래서 String.valueOf(i)를 사용했다.

String.valueOf()를 사용하면 가독성 및 의도가 분명하게 표시되고, 타입 안전성을 갖는다.

String.valueOf()는 모든 기본 데이터 타입 및 객체를 안전하게 처리할 수 있다. null값을 넣어도 "null"로 처리해서 에러가 발생하지 않는다.

반면 숫자+""의 경우 객체나 null을 처리할 때 NullPointerException을 유발할 수 있다.

 

 

오늘도 즐거운 코딩!

반응형
저작자표시 비영리 변경금지 (새창열림)
'알고리즘/알고리즘 풀이' 카테고리의 다른 글
  • 프로그래머스_약수의 합 JAVA
  • 프로그래머스_최댓값과 최솟값 JAVA
  • 프로그래머스_문자열 내림차순으로 배치하기 JAVA
  • 프로그래머스_소수 찾기 JAVA
데부한
데부한
어차피 할 거면 긍정적으로 하고 싶은 개발자
    반응형
  • 데부한
    동동이개발바닥
    데부한
  • 전체
    오늘
    어제
    • 분류 전체보기 (307)
      • 방통대 컴퓨터과학과 (27)
        • 잡담 (9)
        • 3학년1학기 (17)
      • 프로젝트 및 컨퍼런스 회고 (1)
        • 프로젝트 (4)
        • 한이음 프로젝트 (0)
        • 회고 (3)
      • 공부 (165)
        • Spring (37)
        • JPA (71)
        • 인프런 워밍업 클럽_BE (10)
        • Java (6)
        • React.js (27)
        • 넥사크로 (11)
        • 기타 (3)
      • 알고리즘 (85)
        • 알고리즘 유형 (10)
        • 알고리즘 풀이 (57)
        • SQL 풀이 (18)
      • 에러 해결 (13)
      • 잡담 (7)
        • 국비교육 (2)
        • 구매후기 (5)
        • 진짜 잡담 (0)
  • 블로그 메뉴

    • Github
    • Linkedin
    • 홈
    • 방명록
    • 글쓰기
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    SpringBoot를 이용한 RESTful Web Service 개발
    기출문제
    인프런
    개발자
    자바스크립트
    springboot
    전자정부프레임워크
    코딩테스트
    JPA
    알고리즘
    백준
    토이프로젝트
    운영체제
    oracle
    QueryDSL
    Java
    SQL
    IT
    egov
    스프링부트
    MSA
    넥사크로
    RESTful
    Spring
    토비의스프링부트
    react
    프론트엔드
    에러해결
    프로그래머스
    방통대
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
데부한
프로그래머스_숫자 문자열과 영단어 JAVA
상단으로

티스토리툴바