[TIL] 240902 (커리어톤 이력서 마무리 및 1차 제출 완료 / 프로그래머스 숫자 문자열과 영단어)

·2024년 9월 2일

TIL

목록 보기
147/268
post-thumbnail

🥞 오늘 한 일

  • 커리어톤
    • 이력서 마무리 완료
    • 1차 제출 완료
  • 알고리즘 코드카타
    • 숫자 문자열과 영단어

커리어톤

이력서를 일단 1차적으로 완료했다. 내가 보기에도 너무 부족함이 많은 이력서지만, 언제까지고 내 마음에 들 때까지 고친 다음에 제출을 할 수는 없는 노릇이라는 생각이 들어 일단 제출했다. 피드백을 받아보고 2차적으로 대대적인 수정을 해야할 것 같다.

알고리즘 코드카타

숫자 문자열과 영단어

문제

네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.

다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.

  • 1478 → "one4seveneight"
  • 234567 → "23four5six7"
  • 10203 → "1zerotwozero3"

이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.

풀이

function solution(s) {
  const numArr = [
    "zero",
    "one",
    "two",
    "three",
    "four",
    "five",
    "six",
    "seven",
    "eight",
    "nine",
  ];
  for (let i = 0; i < numArr.length; i++) {
    if (s.includes(numArr[i])) {
      s = s.replace(numArr[i], i);
    }
  }
  return +s;
}

처음으로 제출한 코드. 배열을 만들고 해당 배열을 반복해서 s에 해당하는 문자가 있으면 i(숫자)로 replace해준 다음, 변경된 s를 숫자열로 바꿔서 return했다.
그러나 이 경우 같은 문자가 여러 번 있을 수 있기에, 그럴 경우 전부 숫자로 바뀌지 않는 문제가 있었다.
때문에 다음 코드를 if문 안에 추가했다.

i -= 1;

이걸 추가하면 여러 번 같은 문자가 있어도 계속 다시 확인하기 때문에 겹치는 문자도 전부 숫자로 바꿔줄 수 있었다.
최종 코드는 아래와 같다.

function solution(s) {
  const numArr = [
    "zero",
    "one",
    "two",
    "three",
    "four",
    "five",
    "six",
    "seven",
    "eight",
    "nine",
  ];
  for (let i = 0; i < numArr.length; i++) {
    if (s.includes(numArr[i])) {
      s = s.replace(numArr[i], i);
      i -= 1;
    }
  }
  return +s;
}
profile
웹 프론트엔드 개발자

0개의 댓글