Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Linux
- 백준 javascript
- java 백준 1차원 배열
- 자바
- toCharArray
- Kotlin
- map
- 리눅스
- 리눅스마스터 3과목
- 카카오
- 코딩테스트
- 반복문
- Java
- Memoir
- 월간코드챌린지
- 백준 java
- 스프링 컨테이너
- 코테
- 리눅스마스터 1급 정리
- GoingBus
- 연습문제
- 문자열
- 자바스크립트 코딩의 기술
- 고잉버스
- 명령어
- 개발자 회고록
- 리눅스마스터1급
- JavaScript
- 프로그래머스
- 스프링 빈
Archives
- Today
- Total
hoon's bLog
Java 프로그래머스 최소 직사각형 자바 본문
반응형
문제출처 : https://programmers.co.kr/learn/courses/30/lessons/86491
[나의 풀이]
- 입력받은 배열을 받아 가로(x), 세로(y)로 분리하여 최대값을 저장
class Solution {
public int solution(int[][] size) {
int answer = 0;
int sizeL = size.length;
//가로쪽에 긴 길이 몰아주기
int[] x = new int[sizeL]; //큰수 저장할 배열
int[] y = new int[sizeL]; //작은수 저장할 배열
int tmp1 = 0; //큰 수중의 최대값 저장할 변수
int tmp2 = 0; //작은 수중의 최대값 저장할 변수
for(int i=0; i < sizeL ;i++){
int j = 0;
x[i] = (size[i][j] < size[i][j+1]) ? size[i][j+1] : size[i][j];
y[i] = (size[i][j] < size[i][j+1]) ? size[i][j] : size[i][j+1];
tmp1 = tmp1 <= x[i] ? x[i] : tmp1;
tmp2 = tmp2 <= y[i] ? y[i] : tmp2;
}
answer = tmp1 * tmp2;
return answer;
}
}
[다른사람의 풀이-1]
class Solution {
public int solution(int[][] sizes) {
// sizes 배열을 받아서 stream 객체 생성 후,
// 람다식을 통해 a,b int[] 변수에 stream 객체의
// 최대값 중에 최대값, 최소값 중에 최대값을 저장하여
// it 변수에 곱한 값을 가져와서 return
return Arrays.stream(sizes).reduce((a, b) -> new int[]{
Math.max(Math.max(a[0], a[1]), Math.max(b[0], b[1])),
Math.max(Math.min(a[0], a[1]), Math.min(b[0], b[1]))
}).map(it -> it[0] * it[1]).get();
}
}
[다른사람의 풀이-2]
class Solution {
public int solution(int[][] sizes) {
int length = 0, height = 0;
//for-each로 sizes 배열의 값을 card 변수에 담아
//너비(length), 높이(height)의 최대값을 가져옴
for (int[] card : sizes) {
length = Math.max(length, Math.max(card[0], card[1]));
height = Math.max(height, Math.min(card[0], card[1]));
}
int answer = length * height;
return answer;
}
}
[정리]
- 2차원배열의 데이터를 for-each 객체로 풀어서 가져와 1차원 배열에 넣을 경우,
선언함에 따라 2차원배열의 값이 1차원의 배열이 된다?!?
ex). input : sizes[][] = new int[][]{{60, 50}, {60, 70}, {60, 30}, {80, 40}}
-> for-each로 int[] card = {60, 50}, int[] card = {60, 70}...
이런식으로 2차원배열의 index인 [0][0]=60,[0][1]=50 ...... 요소가 하나의 1차원 배열이 된다!!
- 배열의 데이터 처리 방식 및 최대값/최소값을 다루는게 이 문제에 핵심이였던것 같다!
개인피셜 난이도 : ★★☆☆☆(난이도가 낮을 때를 행복해하자ㅠㅠ)
역시나 stream을 이용한다던지,
max, min함수 활용을 통해 변수를 최소화 할 수 있었다.
다른 분들의 코딩 방식을 나름 이해하기 쉽게 설명 해봤는데
나만 알아볼 수 있는건 아닌지 모르겠다....
혹시나 잘못된 부분이나 더 멋지게 설명 가능하신 분은 지적 부탁드립니다!!(--)(__)
끝!
728x90
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[Java] 프로그래머스 소수 만들기 자바 (0) | 2022.06.14 |
---|---|
[Java] 프로그래머스 부족한 금액 계산하기 자바 (0) | 2022.06.14 |
Java 프로그래머스 나머지가 1이 되는 수 찾기 자바 (0) | 2022.06.13 |
Java 프로그래머스 약수의 개수와 덧셈 자바 (0) | 2022.06.13 |
Java 프로그래머스 없는 숫자 더하기 자바 (0) | 2022.06.12 |