반응형
문제분석
목표: 모든 명함을 넣을수있는 가장 작은 지갑 만들기
특수규칙: 명함은 회전할수있다.
전 이 문제를.. Set과 3차 반복문으로 40줄넘겨가면서 삽질하면서 풀었습니다...
가로와 세로에대한 틀에 너무 집중하시면 자칫하다 개고생합니다(하드모드).
가로: 두 변중에서 긴 부분
세로: 두 변중에서 작은 부분
이렇게 생각하시면 놀랍게도 정말 쉽게 풀리는 문제입니다.
그림으로 보실까요?
가로를 두 변중에서 가장 긴 부분으로 설정합니다. (모든 명함을 제일 긴부분으로 눕히는거죠)
세로를 두 변중에서 가장 작은 부분으로 설정합니다.
그후, 가로와 세로의 길이가 모두 들어맞게, Max(가로)와 Max(세로)를 설정하면 정말 쉽게풀립니다.
문제풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
import java.util.*;
class Solution {
public int solution(int[][] sizes) {
int answer = 0;
int max_v=0;
int max_h=0;
for(int i=0;i<sizes.length;i++){
int v=Math.max(sizes[i][0],sizes[i][1]);
int h=Math.min(sizes[i][0],sizes[i][1]);
max_v=Math.max(max_v,v);
max_h=Math.max(max_h,h);
}
return answer=max_v*max_h;
}
}
|
cs |
이번문제는 사고력문제라고 생각합니다.
문제 접근을 잘한다면 10분안에 풀겠지만, 잘못하면 1시간만에 풀어버릴수가있습니다.
반응형
'알고리즘 > 프로그래머스 Level1' 카테고리의 다른 글
[프로그래머스,자바] Level1: 신고 결과 받기 (1) | 2022.01.18 |
---|---|
[프로그래머스,Java] Level1: 나머지가 1이되는 수 찾기 (0) | 2021.10.14 |
[프로그래머스,Java] Level1:크레인 인형뽑기 (0) | 2021.09.21 |
[프로그래머스,Java] Level1:수박수박수박 (0) | 2021.09.21 |
[프로그래머스,Java] Level1: 소수 찾기 (0) | 2021.09.21 |