| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 오블완
- solved class 2
- Unity
- 백준 구현문제
- C++
- 리그오브레전드턴제게임
- c#코딩기초트레이닝
- c#기본문법
- c#기초문법
- 바킹독알고리즘
- 바킹독
- 티스토리챌린지
- C#문법
- 백준 c++ 공부
- unity게임
- 백준
- 유니티서바이벌게임만들기
- unity3d게임만들기
- 유니티
- unity3dservival
- 유니티게임만들기
- 백준 C++
- 백준코테
- 유니티공부
- c++ solved.ac
- c++ 백준
- c#코테
- unity게임만들기
- c#
- 백준코딩테스트
- Today
- Total
나 개발자 진짜 되냐?
코딩테스트 입문 - 영어가 싫어요 ( find, replace ) 본문

아
즐거운?! 마지막 연휴입니다.
현충일이 토요일이여서 아쉬운 오늘입니다.
저는 오늘 알바를 다녀오고
늦게서야 뭘 시작했네요.
오늘 저녁 잘 달려보겠습니다.
우선!
저도 영어를 싫어하기 때문에
잘 한번 풀어보겠습니다.

원래 계획은..?
이 string을 한 칸씩 검사해서
o면.. 1을 쓰고 뒤에 두 개를 건너뛰고..
그렇게 하려고 했는데..?
음...
f면 five, four이고 막 t면 two three 이래 가지고..
이 방법은 아닐 거 같다는 생각을 하고 인지 씨를 찾았다.
인지 씨는
1.
영단어를 배열에 담아 인덱스와 매칭시킨다
string num [10] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};

2.
find로 string안에서 찾아서
replace로 글자를 바꿔줘라.
3.
stoll로 글자를 ll로 바꿔줘라.
근데, find와 replace가 과연 최고의 코드일까??
의심스러워서 다시 질문했다.
그랬더니 다른 방법을 알려주었다.
글자를 한 글자씩 검사해서
글자를 임시바구니에 넣었다가
넣은 글자가 만약에 우리가 바라던 글자면? 임시바구니를 비우고 숫자를 넣으라고 했다.
결국은 2중 포문으로 풀어야 하고,
answer은 long long인걸 생각해야 한다.
그래서 숫자로 기입해 주기 위해서는
i가 자릿수에 맞게 되어있으니 i를 활용하고
* 10 해주면 자릿수가 한 칸씩 늘어난다.
그리고 + i 해주면 된다.

여기서 중요한 건
answer = answer * 10 + i;
임시 바구니 tmp 만들기
자, 이제
find랑 replace를 써볼까?
쉽고 빠르다니까 쓰고 싶어 진다.
find
긴 문자열에서 내가 원하는 글자나 단어가 몇 번째에 있는지 인덱스를 찾아준다.
문자열. find("찾을 단어")
단어를 찾으면 시작 인덱스번호를 반환
못 찾으면 string::nops를 반환

이렇게 사용한다고 한다.
값이 npos가 아니면!으로
replace
문자열의 특정 부분을 다른 글자로 싹 바꿔준다.
어디서부터, 몇 글자를, 뭘로 바꿀 건지
이 세 가지를 적어줘야 한다.
문자열. replace(시작위치, 지울 글자길이, "새로운 단어")
string.replace(7,5, "banana") 이렇게
그래서 이 두 개를 활용하면
for(int i = 0; i < 10; i++)
while문으로 찾아준다.
if로 하면 곤란한 이유는
oneone이면
앞에 one만 바꿔주고 i가 넘어가서
뒤에 one은 지나가게 된다.
그래서!
while (numbers.find(num [i])!= string::npos)
해주고
안에서는
find로 인해 나온 인덱스 값을
변수 tmp에 저장해 주고,
그 tmp을 replace에 넣어준다.
number.replace(tmp, num[i].length(), to_string(i));
이렇게 해주면 answer이라고 새롭게 변수를 안 만들어도 되긴 하다.
number은 지금 string이어서 i를 to_string(i)로 해야 한다.
그리고 우리는 정수로 출력해줘야 한다고 했으니
마지막에
stoll(numbers)로 한다.

이게 find와 replace를 쓴 식이 된다.
find, replace를 배웠다.
어렵다.
글자에서 인덱스 찾기 FIND!
그래서 바꿔주기 REPLACE!
- 완 -
'프로그래머스를 풀어보아요! > C++' 카테고리의 다른 글
| 코딩테스트 입문 - 저주의 숫자 3 ( 숫자 쪼개기 ) (0) | 2026.05.27 |
|---|---|
| 코딩테스트 입문 - 세균 증식 ( pow, << ) (0) | 2026.05.26 |
| 코딩테스트 입문 - 다음에 올 숫자 ( 가운데 숫자 ) (0) | 2026.05.22 |
| 코딩테스트 입문 - 연속된 수의 합 ( 패턴 ) (0) | 2026.05.22 |
| 코딩테스트 입문 - 문자열 밀기 ( find, 글자 더하기 ) (0) | 2026.05.22 |