1. 문제 설명
2. 문제 풀이 핵심이라 생각하는 점
- 숫자에 대응되는 영단어 처리
- 영단어를 숫자로 바꾸는 것이므로 변경 방법 생각
- 0~9까지 10개라는 점 체크 및 형 변환 체크
3. 정답 코드 확인 및 활용 메소드 체크
3-1 : 정답 코드 확인
- replaceAll() 과 replace를 활용하여 풀이
class Solution {
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);
}
}
class Solution {
public int solution(String s) {
String[] num = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
//숫자가 0~9까지 10개로 정해져 있으므로 i<10
for(int i=0; i<10; i++){
s = s.replace(num[i], Integer.toString(i));
}
int answer = Integer.parseInt(s);
return answer;
}
}
3-2 : 활용 메소드 체크
- String.relaceAll(String regex, String replacement) : 대상 문자열을 원하는 문자 값으로 변환
- String.replace(CharSequence target, CharSequence replacement) : 대상 문자열을 원하는 문자 값으로 변환
- Integer.toString() : int를 String으로 형 변
- Integer.parseInt() : String타입의 숫자를 int타입으로 변환
3-3 : 활용 메소드와 비슷한 메소드 체크
⊙ replaceAll() 과 replace()
- 인자 값의 형태를 보면 CharSequence와 String 이라는 차이점을 볼 수 있습니다.
- 그리고 replaceAll()의 설명을 보면 regex 라 나와있는데 아시다시피 이것은 "정규 표현식"을 의미하죠
- 개발을 할 때 역시 정규표현식을 이용하여 많이들 개발을 하는데 replaceAll()은 정규표현식 사용이 가능합니다.
⊙ toString() 과 String.valueOf()
- 만약 입력된 문자열이 Null이라면 두 함수의 대응점이 다릅니다.
- String.valueOf()는 우선 "null"이라는 문자열로 처리합니다.
- 하지만 Integer.toString()은 "Null PointerException"이라는 오류를 발생시킵니다.
- 만약 null 조차도 오류가 아닌 문자열로 처리해야 한다면 String.valueOf()를 그 외라면 Integer.toString()을 사용하면 됩니다.
⊙parse의 종류
- Byte.parseByte();
- Short.parseShort();
- Integer.parseInt();
- Long.parseLong();
- Float.parseFloat();
- Double.parseDouble();
- char는 parseChar()가 아니라 charAt()
- boolean은 없다.
4. 공부하고 싶은 다른 분의 풀이
- 이차원 배열과 향상된 for문으로 가독성 좋게 풀어내셨다.
- 대응이라는 부분을 생각할떄 참고해야겠다.
class Solution {
public int solution(String s) {
String[][] mapArr = { {"0", "zero"},
{"1", "one"},
{"2", "two"},
{"3", "three"},
{"4", "four"},
{"5", "five"},
{"6", "six"},
{"7", "seven"},
{"8", "eight"},
{"9", "nine"} };
for(String[] map : mapArr){
s = s.replace(map[1], map[0]);
}
int answer = Integer.parseInt(s);
return answer;
}
}
'Programmers > JAVA' 카테고리의 다른 글
[ 프로그래머스 ] 가장 가까운 같은 글자 - Java (0) | 2023.01.13 |
---|---|
[ 프로그래머스 ] JadenCase 문자열 만들기 - Java (0) | 2023.01.10 |
[ 프로그래머스 ] 마법의 엘리베이터 - Java (0) | 2023.01.06 |
[ 프로그래머스 ] 비밀지도 - Java (0) | 2023.01.06 |
[ 문자열 중복제거 ] , [ 문자배열 중복제거 ] (0) | 2022.12.31 |