[ TIL09 ]

이형철·2023년 8월 23일

오늘 푼 문제 중 맘에 들었던 문제입니다!

최소 직사각형 구하기

  • 지갑을 만드는데 int 사이즈 안에 있는 값들이 명함의 가로, 세로 길이 입니다.
  • 이 명함들이 다 들어갈 수 있는 지갑을 만드는 것이 핵심 문제 입니다.

int answer = 0;
int[][] sizes = {{60, 50}, {30, 70}, {60, 30}, {80, 40}};
int w = 0;
int h = 0;
for (int i = 0; i < sizes.length ; i++) {
int x = Math.max(sizes[i][0],sizes[i][1]); //60,70,60,80
int y = Math.min(sizes[i][0],sizes[i][1]);//50,30,30,40
w = Math.max(w,x);
h = Math.max(h,y);
}
System.out.println(w*h);

  • 어떻게 구현 해야 될지 엄청 막막했는데 비교해야겠다는 생각만 하다보니까 갑자기 Math.max메서드가 생각이 나서 사용하였습니다.
    - 처음에는 반복문으로 비교해야할 값들의 길이를 가져왔습니다.
    - int x 와 y 라는 새로운 변수를 만들어 안에다가 각 명함들의 가로 세로를 비교하여 큰값과 작은 값을 넣었습니다.
    - 명함이 다 들어가는 크기여야 하기 때문에 가로의 제일 큰값과 세로의 제일 큰 값을 찾아 각각 w 와 h에 넣어줬고 정답은 w와 h의 곱으로 4000이 나왔습니다.

매번 처음에 문제를 접할 때는 엄청 막막한 것 같은데 시간을 들여서 고민하다 보면 어떻게 풀어야 할지 생각이 정리되고 메서드를 활용하면서 푸는 것이 점점 능숙해져 간다는 생각이 들었습니다.
강의는 아직 4주차를 듣고 있어 내일까지 5주차를 보도록 하겠습니다!

profile
If Only,,,

0개의 댓글