[Level2] 순위검색, 멀쩡한사각형




순위검색 (미완성)

프로그래머스

테스트케이스만 통과..
제출 시 실패 및 효율성 통과 못함…
해답 기웃기웃 해보니, 너무 복잡한 자료구조와 알고리즘이어서 내 실력이 더 커지면 돌아오겠다….
졌다…😭

function solution(info, query) {
  let answer = [];
  let infoArr = [];
  let queryArr = [];
  for (let i = 0; i < info.length; i++) {
    infoArr[i] = info[i].split(" ");
    queryArr[i] = query[i].replace(/ and/g, "").split(" ");
  }

  for (let i = 0; i < info.length; i++) {
    let cnt = 0;
    for (let j = 0; j < info.length; j++) {
      for (let k = 0; k < 4; k++) {
        if (queryArr[i][k] == infoArr[j][k] || queryArr[i][k] === "-") {
          if (k === 3 && +infoArr[j][4] >= +queryArr[i][4]) {
            cnt++;
            console.log(infoArr[j][k]);
          }
        } else break;
      }
    }
    answer.push(cnt);
  }
  return answer;
}



멀쩡한 사각형

프로그래머스

수학….
수학….. 수학 어쩌지?
수학은 어떻게 공부해야할까?
잘린 사각형 갯수가 [w + h - 최대공약수] 라는 식을 참고해서 풀었다..ㅠㅠ
유클리드 호제법은 완벽한 암기를 해야겠다.

function gcd(a, b) {
  if (a < b) [a, b] = [b, a];

  while (b > 0) {
    let temp = b;
    b = a % b;
    a = temp;
  }
  return a;
}

function solution(w, h) {
  return w * h - (w + h - gcd(w, h));
}

console.log(solution(8, 12));