| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- til
- 회고
- 알고리즘
- MVMM
- sql
- 스터디윗미
- GoogleCloudConsole
- AI
- INSERT SELECT
- 프로그래머스
- RESIGNAL
- 자바의 정석
- 유데미
- javascript
- 조건문
- Gemini
- 스레드
- 백준
- 개념
- 유데미코리아
- databse
- Error Handling
- dangerouslySetInnerHTML
- react
- 파이썬
- Java
- mysql
- 자바
- join
- Google Cloud Skills Boost
- Today
- Total
휘적이는 기록공간
[javascript] 프로그래머스 숫자 문자열과 영단어 본문
[javascript] 프로그래머스 숫자 문자열과 영단어
휘희 2021. 11. 30. 22:15문제
네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.
얘네는 왜 이런 놀이를 했을까...
숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.
- 1478 → "one4seveneight"
- 234567 → "23four5six7"
- 10203 → "1zerotwozero3"
문자열 s에 들어있는 값들을 확인하고
숫자 -> 숫자
문자열(영어) -> 숫자
로 변환시켜주면 되는 문제
문제점
1. 이 안에 문자가 있는지 숫자가 있는지 어떻게 파악을 하는가
2. 배열의 형태로 값들이 들어있는 것이 아닌 문자열 형태에서 어떻게 값들을 구분할 수 있는가
풀이방법
처음에는
문자열을 쪼개고->쪼갠 것이 문자열인지 숫자인지 확인->문자라면 변환->출력
이런식으로 생각했다.
slice(), includes()등의 방법들을 생각했으나 쉽지 않았다.
문자열 변경이 값을 나눠야만 가능할까?
라고 생각했고

검색으로 replace()에 대해 알게 됨
replace(찾는 값, 대체 값)
replace()함수의 특징
1. 찾는 값이 문자열 인 경우,
첫 번째 문자열만 치환이 되며 원래 문자열은 변경되지 않는 특징을 갖고 있다.
2. 대소문자를 구분한다.
그렇기 때문에 단순히
s = s.replace('one', '1');
이런식으로 문자열을 넣게 된다면
만약 s가 'oneonetwo0'이라면
1one20과 같이 첫번째 값만 바뀌게 된다.
그래서 정규표현식을 이용하여 해당되는 모든 문자열을 검색함
s = s.replace(/zero/gi, "0")
(1) //안에는 검색하고자 하는 '문자열'을 넣는데 ''없이 그냥 넣어야한다
(2) g는 전체범위, 모든 범위에 해당되는 조건 (global)
(3) i는 대소문자 구분없이 일치하는 모든 조건
대문자가 들어올 일은 없어보이지만 뭐든 사전에 방지하는 것이 좋으니까!
function solution(s) {
var answer = 0;
s = s.replace(/zero/gi, "0")
s = s.replace(/one/gi, "1")
s = s.replace(/two/gi, "2")
s = s.replace(/three/gi, "3")
s = s.replace(/four/gi, "4")
s = s.replace(/five/gi, "5")
s = s.replace(/six/gi, "6")
s = s.replace(/seven/gi, "7")
s = s.replace(/eight/gi, "8")
s = s.replace(/nine/gi, "9")
answer = parseInt(s);
return answer
}
그래서 문자열을 변환시키고
string->Integer로 바꿔주는 parseInt에 값을 넣어 숫자로 바꾼 후 값 return 하면 끝
사실 값이 계속 null이 나와서 뭐가 잘못된 걸까 했는데
값을 s에 안담고 계속 변환만 시켜서 null이 나오는 것이었다.
'Tech Notes & Growth > Algorithm & Problem Solving' 카테고리의 다른 글
| [java] 프로그래머스 문자열 다루기 기본 (0) | 2025.03.30 |
|---|---|
| [java] 백준 문제 2739, 구구단 (부제: 코드 길이가 길어도 반드시 성능이 떨어지지 않으며, 짧다고 해서 좋은 성능을 보장하는 것도 아니다) (1) | 2025.03.30 |
| [java] 프로그래머스 핸드폰 번호 가리기 (1) | 2025.03.27 |
| [nodejs] 백준 10171번 고양이 (0) | 2021.12.06 |
| [javascript] 프로그래머스, 로또의 최고 순위와 최저 순위 (0) | 2021.11.22 |