-
[알고리즘/자바스크립트] 문자열 카운터 (String incrementer)Algorithm 2019. 8. 4. 23:00
-해당 문제는 codewars사이트의 level5 문제입니다. (1~8단계 중 8단계가 가장 쉬운 레벨)-
String incrementer
Your job is to write a function which increments a string, to create a new string.
- If the string already ends with a number, the number should be incremented by 1.
- If the string does not end with a number. the number 1 should be appended to the new string.
foo → foo1
foobar23 → foobar24
foo0042 → foo0043
foo9 → foo10
foo099 → foo100
위의 예제를 보면 알 수 있듯이
만약 주어진 문자열이 숫자로 끝나지 않으면 1을 붙여서 리턴하고,
숫자로 끝난다면 그 숫자를 1 증가시켜서 리턴한다.
만약에 숫자가 0으로 시작한다면 0의 개수를 고려해서 문제를 풀어야 한다.
function incrementString (string) { const findNum = string.split('').findIndex(char => !isNaN(Number(char))); if (findNum === -1) return string + '1'; const nums = string.substring(findNum); const result = (Number(nums) + 1 + '').padStart(nums.length, '0'); return string.substring(0, findNum) + result; }
나의 풀이는 다음과 같다.
일단 숫자가 어디있는지 확인해야하니까 findIndex() 메소드를 사용하여
처음으로 숫자가 나왔을 때의 index를 찾아둔다.
만약 인덱스가 -1이면 숫자가 존재하지 않는다는 뜻이므로 string에 '1'을 붙여서 리턴한다.
숫자가 존재한다면 숫자에 1을 더하고 padStart() 메소드로
원래 숫자 부분 문자열의 길이를 기준으로 0을 붙인다.
숫자가 나오기 전까지의 문자열에 위에서 만든 증가된 숫자 부분을 붙여서 리턴한다.
반응형'Algorithm' 카테고리의 다른 글
[알고리즘/자바스크립트] 트리에서 조건에 맞는 값만 필터하기 (Tree Collect) - Depth-First Search (609) 2019.08.15 [알고리즘/자바스크립트] 환영 연결 리스트 찾기 (Linked List Cycle) (609) 2019.08.08 [알고리즘/자바스크립트] Pig Latin 게임 (Simple Pig Latin) (609) 2019.08.04 [알고리즘/자바스크립트] 아나그램 모두 찾기 (Where my anagrams at?) (484) 2019.08.04 [알고리즘/자바스크립트] 반복되지 않는 첫 알파벳 찾기 (First non-repeating character) (609) 2019.08.04 COMMENT