일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 프로그래머스 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #동명 동물 수 찾기 #알고리즘 #코린이 #개발자
- 백준 #4153 #직각삼각형 #알고리즘 #자바 #java #코린이 #개발자 #study
- 프로그래머스 #알고리즘 #mysql #
- 프로그래머스 #알고리즘 #mysql #인기있는 아이스크림 #코린이 #개발자 #study
- mysql #min() #max() #최소값 #최대값 #코린이 #개발자 #study
- 프로그래머스 #아픈 동물 찾기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #동명 동물 수 찾기 #mysql #데이터베이스 #db #코린이 #개발자 #알고리즘
- 코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #이름이 있는 동물의 아이디 #코린이 #개발자 #study
- 백준 #네 번째 점 #3009 #자바 #java #알고리즘 #코린이 #개발자 #study
- 백준 #다이얼 #5622 #알고리즘 #자바 #java #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #어린 동물 찾기 #코린이 #개발자 #study
- 프로그래머스 #나이 정보가 없는 회원 수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #모음 제거 #알고리즘 #자바 #java #코린이 #개발자 #study
- 프로그래머스 #가장 큰 물고기 10마리 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #잡은 물고기 중 가장 큰 물고기의 길이 구하기 #알고리즘 #mysql #코린이 #개발자 #study
- 백준 #일곱 난쟁이 #2309 #자바 #java #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #역순 정렬하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #과일로 만든 아이스크림 고르기 #mysql #알고리즘 #코린이 #개발자 #study
- 백준 #
- 프로그래머스 #python 개발자 찾기 #알고리즘 #mysql #코린이 #개발자 #study
- 프로그래머스 #조건에 맞는 회원수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #흉부외과 또는 일반외과 의사 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #잡은 물고기의 평균 길이 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #12세 이하인 여자 환자 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- 특정 옵션이 포함된 자동차 리스트 구하기 #코린이 #개발자 #study
- 프로그래머스 #mysql #경기도에 위치한 식품창고 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #한 해에 잡은 물고기 수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #자동차 대여 기록에서 장기/단기 대여 구분하기 #코린이 #개발자 #study
- Today
- Total
luke
[프로그래머스] - 숫자 문자열과 영단어 (자바/Java) 본문
https://school.programmers.co.kr/learn/courses/30/lessons/81301
문제.
풀이.
class Solution {
public int solution(String s) {
String[] split = s.split("");
String[] word = {"zero", "one", "two", "three", "four", "five", "six",
"seven", "eight", "nine"};
String[] num = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};
int answer = 0;
String res = "";
String tot = "";
for (int i = 0; i < split.length; i++) {
res += split[i];
for (int j = 0; j < word.length; j++) {
if (res.equals(word[j])) {
tot += res.replaceAll(word[j], num[j]);
res = "";
}
if (res.equals(num[j])){
tot += num[j];
res = "";
}
}
}
answer = Integer.parseInt(tot);
return answer;
}
}
오늘 문제는 프로그래머스 " 숫자 문자열과 영단어 " 문제다.
이번 문제는 까다로우면서도 크게 어렵지 않았던 문제다. 다만 문제를 풀면서 replaceAll() 함수에 대해 다시 한번 알게 된 문제다.
문제 설명은 입력받은 문자열을 단어에 일치할경우 단어는 숫자로 숫자는 숫자 그대로 출력하는 문제다.
그럼 바로 문제 풀이를 해보겠다.
1. 문자열 변수 res, tot 2개를 만들어 준다. word 배열 (단어), num 배열 (숫자) 도 만들어 준다.
2. 입력받은 문자를 split()함수를 사용해 한 문자씩 끊어준다.
3. 반복문을 통해 res변수에 split[i] 를 더해줘 2번째 반복문에 res변수가 word배열 값과 일치할 경우 word 배열의 순서 인덱스를 replaceAll() 함수를 통해 num배열 인덱스와 일치하게 바꿔 tot 변수에 담아준다.
4. 일치하다면 res 변수는 다시 빈 값으로 초기화 해주고 다시 일치한 값들을 비교한다.
5. answer 은 숫자타입 이기에 문자열로 받은 결과값을 숫자 타입으로 형변환 해준다. 그럼 끝이다.!
이렇게 문제를 풀면서 코드가 지저분하고 조금 더 깔끔한 코드는 없을까 라는 의문점을 가졌다.
그렇게 고민해보고 찾아보니 replaceAll() 함수를 제대로 활용하지 못했다는 걸 알게 되었다.
밑에 새로운 답을 작성해 뒀으니 봐보자.
class Solution {
public int solution(String s) {
String[] word = {"zero", "one", "two", "three", "four", "five", "six",
"seven", "eight", "nine"};
String[] num = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};
int answer = 0;
for (int i = 0; i < word.length; i++) {
s = s.replaceAll(word[i], num[i]);
}
answer = Integer.parseInt(s);
return answer;
}
}
'알고리즘문제 > 프로그래머스(Java)' 카테고리의 다른 글
[프로그래머스] - 암호 해독 (자바/Java) (0) | 2024.06.12 |
---|---|
[프로그래머스] - 가장 가까운 같은 글자 (자바/Java) (0) | 2024.06.12 |
[프로그래머스] - 시저 암호 (자바/Java) (0) | 2024.06.02 |
[프로그래머스] - 최소직사각형 (자바/Java) (0) | 2024.05.30 |
[프로그래머스] - 삼총사 (자바/Java) (0) | 2024.05.28 |