Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 오블완
- IFileDialog
- algorithm
- DeferredRendering
- 언리얼엔진5
- UnrealEngine5
- UnrealEngine4
- GeeksForGeeks
- Unreal Engine5
- NRVO
- baekjoon
- C
- softeer
- directx
- RootMotion
- Frustum
- C++
- DirectX11
- RVO
- winapi
- 2294
- 팰린드롬 만들기
- 백준
- Programmers
- UE5
- const
- 줄 세우기
- 티스토리챌린지
- 프로그래머스
- 1563
Archives
- Today
- Total
Game Develop
[Algorithm] Programmers :: 숫자 문자열과 영단어 본문
https://programmers.co.kr/learn/courses/30/lessons/81301
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
int solution(string s)
{
// s는 1이상 50이하
// s는 0으로 시작하는 경우 없음.
// return은 1이상 2,000,000,000 이하의 정수가 되는 올바른 입력만 주어진다.
// isdigit // 알파벳이면 0리턴. 아니면 아무숫자리턴
// substr(0,4) => 0~3 인덱스의 문자열 반환.
vector<string> patterns = { "zero","one","two","three","four","five","six","seven","eight","nine" };
string num = "0123456789";
for (int i = 0; i < num.size(); i++)
{
s = regex_replace(s, regex(patterns[i]), num.substr(i, 1)); // s에서 patterns[i]에 해당하는 문자열 '전부를', num.substr(i,1)로 바꾼다.
// 즉 i가 0이면, s라는 문자열에서 zero라는 문자열 전부를 0으로 바꾼다.
int a = 0;
}
return stoi(s);
}
|
cs |
문제자체는 그냥 처음부터 하드코딩으로 하더라도 일단 풀겠다..라는 마인드로하면 풀 수 있다.
그래서 반 하드코딩식으로 구현하다가 아니다 싶어서 관련되서 좀 구글링했는데... 정규식이란걸 발견했다.
정규식을 알고 모르고에 따른 문자열문제에 대한 해결난이도는 정말 달라진다.
문자열문제를 쉽게 다루고싶으면, 반드시 정규식을 공부하길 바란다.
그냥 위 문제에 대해서, 정규식을 아는사람의 풀이와 모르는 사람의 풀이난이도가 많이 다르다.
다만, 다양한 상황에 능숙하게 쓰려면 연습이 많이 필요해보인다.
만약 100% 하드코딩으로 if문으로 도배해서 푼 사람이 위의 코드를 본다면 정신적충격을 받을수도 있다.
잘 정리된 사이트
https://ansohxxn.github.io/cpp/chapter18-5/
그리고 여담으로, 위의 문제는 프로그래머스 1레벨짜리 카카오채용문젠데, 정규식을 알고나서 보니까 그냥 대놓고 정규식에 대해서 알고있는가에 대한 문제같다. 다른 카카오문제같은경우도 특정 문자열을 단계를 거쳐 다른 문자열로 변환하는 거였는데 그냥 정규식문제였다. 만약 정규식을 모르고 풀었더라면 풀더라도 시간이 오래걸렸을것이다.
근데 난 아직 코테를 많이 안해봐서 이런 정규식문제가 원래 자주 나오는지는 잘 모르겠다.
'Algorithm > Programmers' 카테고리의 다른 글
[Algorithm] Programmers :: 타겟 넘버 (0) | 2022.05.19 |
---|---|
[Algorithm] Programmers :: 피보나치 수 (0) | 2022.05.18 |
[Algorithm] Programmers :: 멀쩡한 사각형 (0) | 2022.05.18 |
[Algorithm] Programmers :: N개의 최소공배수 (0) | 2022.05.18 |
[Algorithm] Programmers :: 가장 먼 노드 (0) | 2022.05.13 |