728x90
난이도 : Lv. 1
풀이일 : 2412242
https://school.programmers.co.kr/learn/courses/30/lessons/86491
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제
풀이 코드
import java.util.Arrays;
class Solution {
public int solution(int[][] sizes) {
int garo = 0, sero = 0;
for (int[] s : sizes) {
Arrays.sort(s);
if (s[0] > garo) {
garo = s[0];
}
if (s[1] > sero) {
sero = s[1];
}
}
return garo * sero;
}
}
- 파이썬 풀이와 마찬가지로 각 명함을 정렬한 뒤, 긴 쪽과 짧은 쪽 길이가 이전에 저장된 것보다 큰지 확인해서 재할당
제출 결과
성능이 너무 별로여서 개선이 필요하다고 생각했다ㅜ
개선 코드
class Solution {
public int solution(int[][] sizes) {
int garo = 0, sero = 0;
int small, large;
for (int[] s : sizes) {
small = Math.min(s[0], s[1]);
large = Math.max(s[0], s[1]);
if (small > garo) {
garo = small;
}
if (large > sero) {
sero = large;
}
}
return garo * sero;
}
}
- garo, sero : 명함들의 긴 쪽과 짧은 쪽 최대값을 저장할 변수
- small, large :각 명함의 긴 쪽과 짧은쪽
- 모든 명함에 대해 짧은 쪽과 긴쪽이 현재 저장된 최대값보다 작으면 재할당
제출 결과
느낀점
- 시간 보고 다시 수정하니까 재밌다.
- 그리고 이제 자바도 좀 익숙해진 것 같다 확실히
다른 코드
class Solution {
public int solution(int[][] sizes) {
int garo = 0, sero = 0;
int small, large;
for (int[] s : sizes) {
small = s[0] < s[1] ? s[0] : s[1];
large = s[0] < s[1] ? s[1] : s[0];
if (small > garo) {
garo = small;
}
if (large > sero) {
sero = large;
}
}
return garo * sero;
}
}
- 어차피 숫자 두 갠데 자스처럼 삼항 연산자로 풀면 조금 더 빨라지려나 기대하며 수정해보았다.
제출 결과
- 속도는 비슷하다.
'알고리즘 > Lv. 1' 카테고리의 다른 글
프로그래머스 17682 다트 게임 자바스크립트 풀이 (1) | 2024.12.24 |
---|---|
프로그래머스 86491 최소직사각형 자바스크립트 풀이 (0) | 2024.12.24 |
프로그래머스 86491 최소직사각형 파이썬 풀이 (0) | 2024.12.24 |
프로그래머스 12935 제일 작은 수 제거하기 자바스크립트 풀이 (1) | 2024.12.20 |
프로그래머스 17682 다트 게임 자바 풀이 (0) | 2024.12.17 |