Home Programmers - 멀쩡한 사각형
Post
Cancel

Programmers - 멀쩡한 사각형

코딩테스트 연습 - 멀쩡한 사각형

풀이 접근

  1. 각 예시 그림을 그려가며 풀이해보았다. 3X2, 4X2, 5X2, 6X2, 4X3, 5X3, 6X3, 7X3 높이를 고정하고 너비만 늘려가며 계산해보았음 높이가 2와 3일 때는 규칙성이 보였다. 4는 2와 연관되어있다고 생각해서 규칙이 보였다. 문제는 5일때 내가 생각하던 규칙과 관련이 없기에 이 접근법은 아니라고 포기함

  2. 짝수와 홀수의 관계라고 생각하고 풀어보았다. 너비와 높이가 짝수X짝수 ⇒ 규칙이 보임 직사각형으로 쪼개지는것을 발견 홀수X홀수 ⇒ 가운데 사각형의 정중앙을 통과하는 것을 발견 짝수X홀수 ⇒ 띠용?! 모르겠음 2번 접근법도 아니라고 포기했음

  3. 다른 사람의 풀이를 보고 이 문제는 테스트케이스가 부족하기에 규칙을 찾기가 힘들기 때문에 식: 가로 * 세로 - (가로 + 세로 - 최대공약수) 을 보고 최대공약수를 구하는 공식을 구현하는데 집중해서 풀어봤다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function changeWH(w, h) {
  return w > h ? [w, h] : [h, w];
}

function solution(w, h) {
  [w, h] = changeWH(w, h);

  if (h === 1) return 0;

  const gcd = (w, h) => {
    while (h) {
      const res = w % h;
      w = h;
      h = res;
    }

    return w;
  };

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

다른 사람풀이

  • 대각선의 방향을 우상향, 좌표들로 생각해서 기울기를 생각해서 풀이
  • 구글링 격자점의 개수, 대각선을 키워드로 풀이

피드백

옳은 풀이도 있었고 실패했지만 풀어나가는 과정을 스터디원들과 공유했다. 나와같이 1,2번처럼 접근했다가 틀린사람도 있었고, 아예 다른 시도를 해서 풀었던 사람도 있었다. 다른시도로 풀었던 분은 처음들어도 이해가 가게끔 논리적으로 설명했기에 내가 다시 이 문제를 접하게 된다면 이분의 풀이로 접근할 수 있을거 같다.

나와 비슷했지만 풀이를 풀어가는 방법이 달랐던분은 구글링을 잘 활용하셨다. 나는 무조건 풀이법을 검색했지만 다른분은 이 문제에서 비슷한 유형의 수학문제를 생각하고 키워드 검색해서 공식을 찾아내서 풀었다고 한다. 오히려 나는 이 방법을 보고 많이 부끄러웠다. 할수 있는 시도도 안해보고 바로 답부터 찾다니…라며 그래도 이렇게 스터디를 하면서 다양한 생각을 공유하고 성장해나가는거 같다.

-- Missing configuration options! --

VIF 프로젝트 KPT 회고

Notion JS 리팩토링 회고