Notice
Recent Posts
Recent Comments
«   2025/05   »
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
Archives
Today
Total
관리 메뉴

Día de Ruru

20230629 TIL 본문

항해99/TIL

20230629 TIL

공대루루 2023. 6. 29. 15:25

프로그래머스 1단계 숫자 문자열과 영단어

네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.
다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.
1478 → "one4seveneight"   234567 → "23four5six7"   10203 → "1zerotwozero3"
이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.

정답 풀이

뭔가 zero 부터 nine 까지를 배열에 넣어서 그 인덱스 값을 사용하면 될 것 같은데 아무리 생각해봐도 문자열을 어떻게 인식해서 어떻게 치환시켜야 할지는 모르겠다...

이번 문제는 진짜 아무리 생각해봐도 모르겠어서 구글에서 찾아는데 나처럼 생각해서 푼 사람이 있었다. 와 근데 난 배열을 사용하면 될 것 같다고만 생각하고 어떻게 잘라야하나 고민했는데 배열 안의 값을 기준으로 split()해줄 생각을 하다니...

function solution(s) {
  var answer = s;
  const numbers = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
  for (let i = 0; i < numbers.length; i++) {
    let arr = answer.split(numbers[i]);
    answer = arr.join(i);
  }
  return Number(answer);
}

해당 문자 (numbers에 있는 문자들)을 기준으로 split()해주면 s 안에 있던 문자는 요소가 2개인 배열이 된다. 이때 이 배열을 i (number의 인덱스)로 join()해주면 원하는 위치에 문자를 숫자로 치환해줄 수 있는것이다!!!

다른 풀이

정규식에 해당하는 글자를 replace 해주는 코드이다. 이렇게 해도 되는구나... 

function solution(s) {
    s = s.replace(/zero/gi, 0)
    .replace(/one/gi, 1)
    .replace(/two/gi, 2)
    .replace(/three/gi, 3)
    .replace(/four/gi, 4)
    .replace(/five/gi, 5)
    .replace(/six/gi, 6)
    .replace(/seven/gi, 7)
    .replace(/eight/gi, 8)
    .replace(/nine/gi, 9)
    return parseInt(s);
}

'항해99 > TIL' 카테고리의 다른 글

20230704 TIL  (0) 2023.07.04
20230630 TIL Nestjs S3 이미지 링크가 바로 다운로드 되는 경우  (0) 2023.06.30
20230628 TIL  (0) 2023.06.28
20230627 TIL Nestjs에서 S3로 이미지 업로드하기  (0) 2023.06.27
20230626 TIL  (0) 2023.06.26
Comments