Knowledge Map
HackerRank - HackerRank in a String! 본문
문제 [여기]
주어진 문자열에 대해서 'hackerrank' 문자의 알파벳이 들어있는지를 확인하면 된다. 단, h, a, c, k, e, r, r, a, n, k 각 문자는 자신보다 앞에 있는 문자보다 더 먼저 나올수 없다. 즉 harankcker 이렇게 되면 없다고 봐야 한다. 순차적으로 각 알파벳이 주어진 문자열에 존재하는지를 확인하면 되는 문제이다. 즉 'haackkerrank' 이렇게 되면 맞는것, 'hackkkerankk' 이러면 r이 하나 부족하기 때문에 아닌게 되는 것이다.
맞으면 'YES' 를, 아니면 'NO' 를 반환하면 된다.
풀이
const a = str => { const txt = 'hackerrank'; let j = 0, cnt = 0; for(let i = 0; i < txt.length; i++) { for(;j < str.length;j++) { if(txt[i] === str[j]){ j++; cnt++; break; } } if(j === str.length) break; } return cnt === 10 ? "YES" : "NO"; } | cs |
딱히 풀이는 필요 없을거 같다.
그냥 str로 받는 문자열과 'hackerrank'를 각각 인덱스로 순회하면서 비교하면 된다.
위의 코드는 약간 복잡해 보일수 있으니 좀더 간단하게 고쳐보자.
const a = str => { const txt = 'hackerrank', len = str.length; let j = i = cnt = 0; while(j < len) if(txt[i] === str[j++]) { i++; cnt++; } return cnt === 10 ? "YES" : "NO"; } | cs |
'알고리즘' 카테고리의 다른 글
배열중 1개씩만 존재하는 숫자 2개를 찾아내기. (0) | 2018.05.07 |
---|---|
HackerRank - 3D Surface Area (0) | 2017.11.17 |
HackerRank - Super Reduced String (0) | 2017.10.23 |
HackerRank - Between Two Sets (0) | 2017.10.22 |
달팽이 (0) | 2017.09.24 |
Comments