[ 2024.07.22 ] TIL

yy·2024년 7월 22일

개발일지

목록 보기
89/122

1. 2진수 <-> 10진수

이진수 더하기 코딩테스트

2진수와 10진수를 왔다갔다하기 위해 toString()와 parseInt()를 사용했다. 위의 코딩테스트 문제를 푸는데에도 메소드를 이용해서 풀었는데 다른 사람들의풀이를 보니 하나하나 2진수를 구현했더라. 꽤나 인상적이였다.

// 테스트 케이스
const bin1 = "10"
const bin2 = "11"


function solution(bin1, bin2) {
  let temp = Number(bin1) + Number(bin2); // 21
  temp = [...temp.toString()].reverse().map((v) => +v); // [ 1, 2 ]
  // ↑ reverse를 한 이유는 2진수로 변경해주기 위해 자리를 맞춰주기위함.(두번째 반복문을 위함)

// ↓ bin1, bin2 크기를 10이하로 조건이 있었고, 2진수를 변경하기 위해 나머지에 0을 채워준거임.
  for (let i = temp.length; i < 11; i++) { 
    temp.push(0); // temp = [ 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
  }

// ↓ 반복문을 진행시켜서 2진수로 변경하는 반복문
  for (let i = 0; i < temp.length; i++) {
    if (temp[i] === 2) {
      temp[i] = 0;
      temp[i + 1]++;
    } else if (temp[i] === 3) {
      temp[i] = 1;
      temp[i + 1]++;
    }
  }
  return Number(temp.reverse().join("")).toString();
}

2. 정규표현식과 템플릿 리터럴

// 정규표현식 템플릿 리터럴 사용을 이렇게 하면 되는군!
function solution(my_str, n) {
  return my_str.match(new RegExp(`.{1,${n}}`, "g"));
}
profile
시간이 걸릴 뿐 내가 못할 건 없다.

0개의 댓글