티스토리 뷰

알고리즘/프로그래머스 문제풀이

프로그래머스 NodeJS Level 2 : 멀쩡한 사각형

YG - 96년생 , 강아지 있음, 개발자 희망 2021. 10. 28. 16:01

멀쩡한 사각형

 

문제 설명

가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 따라 1cm × 1cm의 정사각형으로 잘라 사용할 예정이었는데, 누군가가 이 종이를 대각선 꼭지점 2개를 잇는 방향으로 잘라 놓았습니다. 그러므로 현재 직사각형 종이는 크기가 같은 직각삼각형 2개로 나누어진 상태입니다. 새로운 종이를 구할 수 없는 상태이기 때문에, 이 종이에서 원래 종이의 가로, 세로 방향과 평행하게 1cm × 1cm로 잘라 사용할 수 있는 만큼만 사용하기로 하였습니다.
가로의 길이 W와 세로의 길이 H가 주어질 때, 사용할 수 있는 정사각형의 개수를 구하는 solution 함수를 완성해 주세요.

제한사항

  • W, H : 1억 이하의 자연수

입출력 예

WHresult

8 12 80

입출력 예 설명

입출력 예 #1
가로가 8, 세로가 12인 직사각형을 대각선 방향으로 자르면 총 16개 정사각형을 사용할 수 없게 됩니다. 원래 직사각형에서는 96개의 정사각형을 만들 수 있었으므로, 96 - 16 = 80 을 반환합니다.

 

 

const fs = require("fs");

const filePath = process.platform === "linux" ? "./input.txt" : "/dev/stdin"; //제 개발환경은 리눅스이기에 input.txt를 앞에 두었습니다.

// const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt'; // 실제 백준사이트에 제출할 때는 위에 filePath를 삭제하고 이 부분을 입력하면 됩니다.

let input = fs.readFileSync(filePath).toString().split(" ");

input = input.map((item) => +item);
//console.log(input);
//console.log(lottos,win_nums);

solution(input[0], input[1]);

function solution(w, h) {
  let oriAnswer = w * h; // 원래의 정사각형 개수
  let gcdVal = gcd(w, h); // w오 h의 최대공약수
  let answer = oriAnswer - (w + h - gcdVal); // w + h - w,h의 최대공약수를 하면 선이 지나가는 정사각형의 개수를 구할 수 있습니다.
  console.log(answer); // 프로그래머스에 제출시에 return answer로 고쳐야 합니다
}

function gcd(w, h) {
  const mod = w % h; // 유클리드 호제법을 이용한 최대공약수 구하는 방법입니다.
  if (mod === 0) {
    //console.log(h);
    return h; // 나머지가 0이면 h값을 반환
  } else {
    //console.log(h, mod);
    return gcd(h, mod); // 나머지가 0이 아니면 w 가 아닌 h로 h % (w%h)를 해줍니다.
  }
}

 

혼자서 푸는 방법을 모르겠어서 다른 사람의 방법을 공부해서 풀었습니다.

 

https://m.blog.naver.com/PostView.nhn?blogId=zzinuhelios&logNo=120024685950&proxyReferer=https:%2F%2Fwww.google.com%2F 

 

대각선이 지나는 단위정사각형

'대각선이 지나는 단위정사각형'에 대한 문제 중 직사각형의 각 변을 m,n이라고 할때 공식은 m+n-(m과n의 ...

blog.naver.com

 

https://noogoonaa.tistory.com/74

 

[프로그래머스][Javascript] 멀쩡한 사각형

문제 설명 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를

noogoonaa.tistory.com

 

두 분의 블로그를 참고하였습니다

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함