본문 바로가기
알고리즘/프로그래머스

(프로그래머스/자바) 힌트문제1 02. 문자열 - 프로그래머스 : 숫자 문자열과 영단어

by son_i 2023. 7. 18.
728x90

코딩테스트 연습 - 숫자 문자열과 영단어 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

java
닫기
class Solution { ​​​​public static int solution(String s) { ​​​​​​​​int answer = 0; ​​​​​​​​​​​​if(s.contains("zero")){ ​​​​​​​​​​​​​​​​s = s.replace("zero","0"); ​​​​​​​​​​​​}if(s.contains("one")){ ​​​​​​​​​​​​​​​​s = s.replace("one","1"); ​​​​​​​​​​​​}if(s.contains("two")){ ​​​​​​​​​​​​​​​​s = s.replace("two","2"); ​​​​​​​​​​​​}if(s.contains("three")){ ​​​​​​​​​​​​​​​​s = s.replace("three","3"); ​​​​​​​​​​​​}if(s.contains("four")){ ​​​​​​​​​​​​​​​​s = s.replace("four","4"); ​​​​​​​​​​​​}if(s.contains("five")){ ​​​​​​​​​​​​​​​​s = s.replace("five","5"); ​​​​​​​​​​​​}if(s.contains("six")){ ​​​​​​​​​​​​​​​​s = s.replace("six","6"); ​​​​​​​​​​​​}if(s.contains("seven")){ ​​​​​​​​​​​​​​​​s = s.replace("seven","7"); ​​​​​​​​​​​​}if(s.contains("eight")){ ​​​​​​​​​​​​​​​​s = s.replace("eight","8"); ​​​​​​​​​​​​}if(s.contains("nine")){ ​​​​​​​​​​​​​​​​s = s.replace("nine","9"); ​​​​​​​​​​​​} ​​​​​​​​return Integer.parseInt(s); ​​​​} }

딱히 방법이 생각나지 않아서 그냥 if문으로 노가다 했는데 정말 좋은 코드 발견 .. !

 

java
닫기
public int solution(String s) { ​​​​​​​​String[] strArr = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}; ​​​​​​​​for(int i = 0; i < strArr.length; i++) { ​​​​​​​​​​​​s = s.replaceAll(strArr[i], Integer.toString(i)); ​​​​​​​​} ​​​​​​​​return Integer.parseInt(s); ​​​​}

감탄이 나온다

 

replaceAll은 한 번도 안 써봤는데

replaceAll(정규식 또는 기존문자, 대체문자) 형태로 사용.

문자열에서 특정 문자를 다른자로 전체 치환하는 메소드

 

너무 효율적이다 .....

 

ex)

str = str.replaceAll("[0-9]", "A");

// [0-9] 는 정규식으로 숫자만 치환할 것을 의미

 

728x90