TIL - 23.01.09

0

TIL

목록 보기
50/126

오늘 프로그래머스 알고리즘 문제를 풀던 도중 직육면체 네모 상자 안에 정육면체 주사위를 채워넣는 문제가 나왔다.

머쓱이는 직육면체 모양의 상자를 하나 가지고 있는데 이 상자에 정육면체 모양의 주사위를 최대한 많이 채우고 싶습니다. 상자의 가로, 세로, 높이가 저장되어있는 배열 box와 주사위 모서리의 길이 정수 n이 매개변수로 주어졌을 때, 상자에 들어갈 수 있는 주사위의 최대 개수를 return 하도록 solution 함수를 완성해주세요.

이러한 문제였는데
나는 for문을 이용해 정육면체의 길이에 i를 곱해 i가 증가할 때마다 직육면체의 길이보다 작을 때까지 카운트를 더해서 가로, 세로, 높이를 곱하는 방식을 생각해냈는데
요즘 자주 드는 생각이 나는 어떤 문제든 for문이나 if문으로 모든 것을 해결하려는...? 그런 사고방식이 박혀있는거같다.

정답 제출 후 다른사람의 풀이를 확인해봤는데
가장 위에 있던 풀이를 보고나서 아 이렇게 정말 간단하게 풀이와 해석이 가능하구나 라는 생각이 들었다.

public int solution(int[] box, int n) {
    int answer = 0;
    int widthNum = box[0] / n;
    int lengthNum = box[1] / n;
    int heightNum = box[2] / n;

    answer = widthNum * lengthNum * heightNum;
    return answer;
}

그냥 직육면체의 각 모서리의 길이를 정육면체의 길이로 나눈 몫을 곱해주기만 하면되는걸 나는 거의 반사적으로 for문을 쓸생각부터 했던것이다.

나의 사고방식이 얼마나 갇혀있는지 알 수 있었고, 내일부터는 대충 생각하지 말고 조금 더 생각해서 멀리 돌아가지 않는 새로운 방식도 많이 써봐야할거같다.

0개의 댓글