Knowledge Map

HackerRank - HackerRank in a String! 본문

알고리즘

HackerRank - HackerRank in a String!

2017. 10. 25. 09:36

문제 [여기]

주어진 문자열에 대해서 '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.lengthbreak;
  }
  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