반응형
https://school.programmers.co.kr/learn/courses/30/lessons/81301
1) 내가 구현한 코드
- 아래의 경우 특수한 경우가 아니더라도 Map으로 매핑만 잘 해준다면 규칙에 맞는 단어 출력 가능함
import java.util.regex.Pattern;
import java.util.*;
class Solution {
private static final Map<String, String> map = new HashMap<>();
static {
map.put("zero", "0");
map.put("one", "1");
map.put("two", "2");
map.put("three", "3");
map.put("four", "4");
map.put("five", "5");
map.put("six", "6");
map.put("seven", "7");
map.put("eight", "8");
map.put("nine", "9");
}
public int solution(String s) {
int answer = 0;
for(Map.Entry<String,String> entry:map.entrySet()){
String word = entry.getKey();
String num = entry.getValue();
//정규식 "(?i)" + word
// => 대소문자 구분 없이 지정한 단어(word)를 검색하고 치환하기 위해 사용되는 패턴
// => 이 방식은 문자열 내에서 replaceAll 메서드를 사용할 때 특히 유용
// => 단어의 대소문자 조합이 여러 형태로 나타나더라도 모두 일관되게 변환할 수 있기 때문
s = s.replaceAll("(?i)"+word, num);
}
answer = Integer.parseInt(s);
return answer;
}
}
2) 오늘의 학습 키워드
- 문자열 처리와 특정 단어 대체
- 영단어와 숫자의 매핑
- 문자열을 순차적으로 변환하는 방법
3) 공부한 내용 정리
이 문제는 문자열 s에서 일부 숫자가 영단어 형태로 주어졌을 때, 이를 숫자로 변환해 반환하는 문제이다.
replace를 이용해 영단어를 숫자로 변환하며, 매핑을 통해 각 영단어를 대응하는 숫자로 바꾼다.
- 영단어와 숫자의 매핑:
- 영단어를 숫자와 일대일 대응시킨다. 예를 들어 "zero"는 0, "one"은 1로 매핑한다.
- 반복적 변환:
- 문자열 s에서 모든 영단어가 숫자로 바뀔 때까지 매핑에 따라 replace를 이용해 변환한다.
- 효율적인 문자열 대체:
- 변환이 완료되면 문자열을 정수로 변환해 반환한다.
4) 문제 해결 과정
- 영단어 매핑 테이블 생성:
- 각 영단어와 숫자 간의 매핑을 사전에 정의한다.
- 매핑에 따라 문자열 변환:
- 주어진 문자열에서 매핑된 영단어를 숫자로 변환하며, 모든 변환이 끝난 문자열을 숫자로 변환해 반환한다.
- 추가 구현 코드 :
public class Solution {
public int solution(String s) {
String[] words = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
for (int i = 0; i < words.length; i++) {
s = s.replace(words[i], String.valueOf(i));
}
return Integer.parseInt(s);
}
}
5) 오늘의 회고
- 문제점
- 문자열 내 특정 영단어와 숫자를 빠르게 대체하는 최적의 방법이 필요했다.
- 시도한 방법
- replace를 반복적으로 활용하여 영단어를 숫자로 변환하는 간결한 방식으로 해결했다.
- 새롭게 알게 된 점
- 영단어와 숫자의 매핑 문제에서 반복적 대체와 문자열 처리의 중요성을 확인했다.
- 내일 학습 목표
- 다양한 문자열 매핑과 패턴 인식을 학습하고 더 큰 데이터셋에 대응하는 연습을 할 것이다.
Q1: 비슷한 문자열 변환 문제에서, replace 이외의 다른 방법으로 효율성을 높일 수 있을까?
Q2: 문자열 내 특정 패턴이 아닌 복잡한 조건을 포함한 대체 작업에서는 어떤 기법을 활용할 수 있을까?
Q3: 문자열 내 여러 변환이 필요할 때, 한 번에 여러 패턴을 매핑하는 더 최적의 방법은 무엇이 있을까?
6) 추가문제
미들러 - 알고리즘수업 - 깊이 우선 탐색1
https://www.acmicpc.net/problem/24479
챌린저 - 웜홀
반응형
'coding_test' 카테고리의 다른 글
[99클럽 4기 코테 스터디 TIL 5일차] 모스부호 (feat. 해시맵, BufferedReader, Bufferedwriter) (0) | 2024.11.01 |
---|---|
[99클럽 4기 코테 스터디 TIL 4일차 보너스문제] 의상 (feat. 해시맵) (1) | 2024.10.31 |
[99클럽 4기 코테 스터디 TIL 3일차] 문자열 나누기 (0) | 2024.10.30 |
[99클럽 4기 코테 스터디 TIL 2일차] 크기가 작은 부분 문자열 (0) | 2024.10.30 |
[99클럽 4기 코테 스터디 TIL 1일차] 문자열 내 p와 y의 개수 (1) | 2024.10.28 |