230112 프로그래머스 최소직사각형(자바/자바스크립트)

샨티(shanti)·2023년 1월 11일
0

코딩테스트

목록 보기
19/35
post-custom-banner

매일 매일 하루 한 문제씩.
꾸준히 이어가는 코딩테스트 풀이 기록 ✅

오늘 푼 문제는 '최소직사각형'

아... 꽤 쉽다고 생각했던 문제인데 결론적으론 내 힘으로 제대로 풀지 않아서 영 맘에 안드는 하루. 뭐 이런날도 있지! 하고 빨리 털어내야 하긴 하는데. 그래도 괜시리 이런 날이면 마음이 폭 꺾이는 느낌이다.

어쨌든. 간만에 min, max를 활용하는 풀이를 확인했고, 또 자바스크립트의 reduce가 누적 더하기가 아닌 다른 방법으로도 활용 가능하다는 점을 알긴 했다.

프론트에서 자바스크립트 활용은 필수 중 필수일텐데. 특히 reduce는 계속 사용해보면서 활용법을 익혀야겠다. 누적더하기 말고도 이런 문제에 활용할 거라곤 생각도 못했음 ㄴㅇㄱ 상상도 못한 정체.

프로그래머스 코딩테스트 최소직사각형


문제


java solution

사실 원래 풀려고 했던 방향성은 배열을 순회하면서 가장 긴 높이, 너비를 구한다음에 가장 긴 너비가 포함된 배열의 높이, 가장 긴 높이가 포함된 배열의 너비를 또다시 비교하면서 각각의 최대값을 찾아내려고 했다.

근데 하면서도 계속 확신이 없어 시간을 꽤 쓰다가 결국 다른 풀이를 보게 되었는데, max, min으로 해결이 되는 부분이었다.

class Solution {
    public int solution(int[][] sizes) {
        int width = 0, height = 0;

        for (int[] card : sizes) {
            width = Math.max(width, Math.max(card[0], card[1]));
            height = Math.max(height, Math.min(card[0], card[1]));
        }
        return width * height;
    }
}

javascript solution

자바스크립트 역시 자바와 크게 다르지 않은 방향성으로 문제를 풀었는데,
나중에 다른 풀이들을 살펴보면서 더 나은 방법들이 있다는 점을 알게됐다.

요즘 최대한 for문을 사용하지 않고, 우선은 immutable하게 풀려고 계속 노력중인데, 아무래도 map, reduce 등의 배열 메서드를 더 확장해서 알아야겠다는 생각이 들었다.

자바스크립트도 너무 어렵게 느껴지는 구간은 조금 지났기 떄문에 코어자바스크립트랑 자바 코딩의 기술 책 병행하며 다시 읽어야겠다고 다짐한 하루... 코어자바스크립트 책 왔으니 오늘부터 읽자. 하..ㅎㅎ.

function solution(sizes) {
  const max = sizes.map((value) => Math.max(value[0], value[1]));
  const min = sizes.map((value) => Math.min(value[0], value[1]));

  const width = max.sort((a, b) => b - a)[0];
  const height = min.sort((a, b) => b - a)[0];

  return width * height;
}

쯥.. ㅠㅠ.
여러모로 아쉬운 오늘의 코딩도장.

아쉬운 부분 2가지를 짚어보자면, 먼저 2차원배열이 나올 때 또다시 '띠용' 하는 마음으로 제대로 풀지 못한 점. 2차원 배열이라고 해봐야 오늘 문제같은 경우 정말 정형화되어 있는 2차원 배열이어서 자바에서도 그리 헷갈일 게 없었는데 그냥 체감난이도가 높았던 것 같다. 자바스크립트에서는 더더욱 문제가 되지 않고...

두번째론 논리 파악이 늦었다는 점.
max, min으로 해결할 수 있는 부분을 너무 많은 경우의 수와 for문으로만 해결하려 하니 쉽게 풀어지지 않았다. 또 풀 수 있었음에도 불구하고 괜한 불안감에 더 나아가지 못한 점.

물론 정해진 시간 내에 풀어야 하는 것도 맞고, 너무 시간을 무한대로 늘여서도 안되지만 그래도 한 번 풀어보는 경험과 유익이 주는게 분명히 있을텐데...
오늘은 그 밸런스를 잘 맞춰낼거란 확신을 가지지 못하고 중간에 포기한 느낌이기도 하다.

어찌됐건!! 오늘 느낀점을 반성점으로 삼아 내일은 끝까지 잘 풀어내보자. 화이팅!


profile
가벼운 사진, 그렇지 못한 글
post-custom-banner

0개의 댓글