Algorithm/codewars

Recover a secret string from random triplets 답안

Bonita SY 2021. 3. 29. 18:46
728x90

문제)

www.codewars.com/kata/53f40dff5f9d31b813000774/train/javascript

 

Codewars: Achieve mastery through challenge

Codewars is where developers achieve code mastery through challenge. Train on kata in the dojo and reach your highest potential.

www.codewars.com

 

내가 푼 답)

var recoverSecret = function(triplets) {
  let dedupTriplet = [];
  triplets.forEach(triplet => dedupTriplet = [...triplet, ...dedupTriplet]);
  dedupTriplet = Array.from(new Set(dedupTriplet));
  
  checkPosition(triplets, dedupTriplet);
  return dedupTriplet.join('');
}

function checkPosition(triplets, dedupTriplet) {
  let flag = false;
  let i = 1;
  for (let tri of triplets) {
    if (changePosition(dedupTriplet, tri[1], tri[2]) || changePosition(dedupTriplet, tri[0], tri[1])) {
      flag = true;
    }
    
    if (flag && (i >= triplets.length)) {
      checkPosition(triplets, dedupTriplet);  
    }
    
    i += 1;
  }
}

function changePosition(arr, a, b) {
  let aIndex = arr.indexOf(a);
  let bIndex = arr.indexOf(b);
  if (aIndex > bIndex) {
    arr.splice(aIndex, 1, b);
    arr.splice(bIndex, 1, a);
    return true;
  }
}

소스를 좀 다듬긴 해야하겠는데,.

 

 

테스트 결과)

 

마음에 드는 다른 사람 소스)

넘사다..

728x90

'Algorithm > codewars' 카테고리의 다른 글

Number of trailing zeros of N! 답안  (0) 2021.03.29
Permutations 답안  (0) 2021.03.29
Greed is Good 답안  (0) 2021.03.24
Moving Zeros To The End 답안  (0) 2021.03.24
Where my anagrams at? 답안  (0) 2021.03.24