알고리즘 - freeCodeCamp - DNA Pairing

NO PAIN, NO GAIN·2019년 11월 23일
0

algorithm

목록 보기
4/18

정해진 문자의 짝을 찾는 문제다. 주어진 문자는 "AT", "CG" 이다.

매개변수로 "CGC" 값이 들어오면 [["C","G"],["G","C"],["C","G]] 로 결과로 반환해야한다.

function pairElement(str) {
  let result = [];
  for (let i = 0; i < str.length; i++) {
  	result.push(atcgPair(str[i]));
  }
  return result;
}

// 짝을 찾는 함수
function atcgPair(letter) {
  if (letter === "A") {
    return [letter, "T"];
  } else if (letter === "T") {
    return [letter, "A"];
  } else if (letter === "C") {
    return [letter, "G"];
  } else if (letter === "G") {
    return [letter, "C"];
  }
}

pairElement("GCG");

처음에 했을 때 for문을 이용해서 해결을 했었다. 하다보니 for문을 사용하지 않고 map 메소드를 이용해서 해결할 수 도 있겠다는 생각이 들었다.

function pairElement(str) {
  let splitStr = str.split(""); // 글자를 split로 나누었다.
  return splitStr.map(atcgPair);
}

코드가 좀더 간결해졌다. 짝을 찾는 함수 atcgPair 를 switch 문을 이용하면 어떤지 궁금해서 바꿨다.

// 짝을 찾는 함수
function atcgPair(letter) {
  switch(letter) {
    case "A" :
    return [letter, "T"];
    case "T" :
    return [letter, "A"];
    case "C" :
    return [letter, "G"];
    case "G" :
    return [letter, "C"];
  }
}

switch 문으로 바꾸니깐 간결해 졌다.

function pairElement(str) {
  let splitStr = str.split("");
  return splitStr.map(atcgPair)
}

function atcgPair(letter) {
  switch(letter) {
    case "A" :
    return [letter, "T"];
    case "T" :
    return [letter, "A"];
    case "C" :
    return [letter, "G"];
    case "G" :
    return [letter, "C"];
  }
}
profile
갈고 닦자.

0개의 댓글