
네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.
다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.
1478 → "one4seveneight"
234567 → "23four5six7"
10203 → "1zerotwozero3"
이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.
참고로 각 숫자에 대응되는 영단어는 다음 표와 같습니다.
숫자 영단어
0 zero
1 one
2 two
3 three
4 four
5 five
6 six
7 seven
8 eight
9 nine
1 ≤ s의 길이 ≤ 50
s가 "zero" 또는 "0"으로 시작하는 경우는 주어지지 않습니다.
return 값이 1 이상 2,000,000,000 이하의 정수가 되는 올바른 입력만 s로 주어집니다.
function solution(s) {
var answer = {
zero: 0,
one: 1,
two: 2,
three: 3,
four: 4,
five: 5,
six: 6,
seven: 7,
eight: 8,
nine: 9,
};
while (isNaN(s)) {
for (var key in answer) {
if (s.indexOf(key) > -1) {
s = s.replace(key, answer[key]);
}
}
}
return Number(s);
}
객체를 선언해 0~9가 key:value로 페어해줌.
isNaN으로 s에 문자를 포함하는 경우를 찾고 answer의 키값에 접근하고 indexOf를 사용해 문자열 여부 확인.
있다면 replace를 사용해 key의 문자열을 value값으로 대체해 주고 s를 Number로 형변환 해서 리턴.
문자열에서 변경하려는 문자열이 여러 번 반복될 경우, 첫 번째로 발견한 문자열만 치환.
str.replace(regexp|substr, newSubstr|function)
1) regexp|substr - 정규식 객체 또는 문자열로 치환하기 위해 찾는 파라미터.
2) newString|function - 첫 번째 파라미터를 대신할 문자열 또는 함수.
통합 개발 환경, 여러 개발자 툴을 결합해 개발에 관련된 모든 작업을 하나의 프로그램 안에서 처리할 환경을 제공하는 소프트웨어.
IDE를 사용하지 않고 메모장만으로도 구현도 가능하지만 IDE를 사용해 더 효율적으로 만들 수 있다.
마이크로소프트에서 개발하고 관리중인 오픈소스 IDE
코드 정렬 : Ctrl + Alt + L
주석 : Ctrl + /
출력 명령어 : console.log();
환경설정 : Ctrl + Alt + S
입력받은 코드를 읽어(Read)들여 메모리에 저장하고 평가(Evaluate)된 값을 출력(Print)함.
특정 신호 입력전까지 위의 과정을 반복(Loop).
웹 브라우저의 콘솔은 Node.js가 제공하는 여러 API와 라이브러리 사용 X.
but, 웹 브라우저의 API를 이용해 DOM(Document Object Model)을 제어 가능.
=> 웹 브라우저에서 사용자가 직접 HTML 요소를 생성이나 변경등의 작업 가능.
Node.js REPL 환경은 백엔드 서버의 코드를 테스트하거나 실험에 적합.
웹 브라우저의 콘솔은 클라이언트의 코드를 작성 및 테스트에 적합.
커멘드창이나 Git Bash를 켜고 node를 입력하면 Node.js의 REPL 환경 사용가능.
프로그래밍 파일의 변경 사항을 추적, 여러 개발자간의 공동 작업의 조율을 도와주는 분산 버전 관리 시스템.
- 버전관리 - 이전 버전을 쉽게 찾아 볼 수 있게 해줌.
=>실수로 코드를 삭제했거나 이전 상태로 돌아가야하는 상황에서 원하는 시점으로 코드 되돌리기 가능.- 협업도구 - 브랜치(Branch)와 충돌(Conflict)감지와 같은 여러 기능을 통해 여러 개발자들이 작업 내용을 충돌 없이 병합하게 도와줌.
Node.js에서 코드의 재사용성을 높이기 위해 작성된 독립적인 코드 조각.
=> 모듈을 npm이나 yarn과 같은 패키지 매니저를 통해 업로드해 다른 개발자와 공유하는 것을 패키지라고 함.
※ 패키지는 다른 패키지를 사용할 수 있음 -> 의존 관계
패키지를 손쉽게 다루는 작업을 안전하고 편리하게 사용하기 위한 툴.
=> Node.js 패키지의 설치, 업데이트, 삭제등을 할 수 있고, 패키지간의 의존성을 관리.
※ 여러 개발자들이 만든 수많은 패키지를 활용해 프로젝트를 더 빠르고 안정적으로 만들 수 있다.
Node.js에서는 대표적으로 npm과 yarn이 존재.
JS에서 사용할 수 있는 패키지 관리자.
npmjs.com 에서 새로운 패키지를 등록하고 설치할 수 있음.
npm의 대체제로 Facebook이 2016년에 출시한 패키지 매니저.
npm에서 부족한 부분을 보완해 편리한 기능과 보안 성능이 향상된 패키지 매니저.
※ 실무에서는 npm을 사용하기도 하지만 yarn이나 pnpm등의 여러 패키지 매니저를 포괄적으로 사용.
패키지 다운로드 과정 중 보안 검사를 수행하므로 위험한 스크립트가 다운로드 되거나 종속성 문제가 발생하는 것을 방지할 수 있음.
병렬 처리를 도입해 패키지 설치 속도가 npm보다 빠름.(한번에 여러 패키지 설치 가능)
Node.js 프로젝트의 가장 핵심적인 파일이며, 프로젝트에 대한 정보와 설치한 패키지들의 버전을 관리할 때 사용하는 파일.
=> npm과 yarn이 동일한 package.json 참조.
- package-lock.json과 yarn.lock은 package.json에서 정의한 패키지 외에도 node_modules에 들어있는 패키지들의 버전과 의존 관계가 상세히 정의됨.
- node_modules가 없어도 lock파일이 존재하면 동일한 패키지 구조를 재설치 가능.
- 패키지를 설치, 수정, 삭제할 때마다 패키지들의 정확한 의존관계를 package-lock.json (yarn의 경우 yarn.lock)에 저장.