GitHub https://github.com/vellimole0621
LeetCode : Third Maximum Number
(문제 - https://leetcode.com/explore/learn/card/fun-with-arrays/523/conclusion/3231/)
문제 설명 : 정수로 이루어진 배열에서 세번째로 큰 수를 반환하라
풀이 :
배열 원소의 수가 1인 경우, 2인 경우(특수한 경우) case 나눠서 처리 -> 원소의 수가 3 이상인 경우, 배열의 끝부터 이전 원소가 더 작아질 경우 순서값을 늘리고 중간값을 더 작은 값으로 변경한다. -> 순서값이 3이 되었을때, 그 때 중간값을 반환
// Leet Code : Third Maximum Number
// https://leetcode.com/explore/learn/card/fun-with-arrays/523/conclusion/3231/
class Solution {
public int thirdMax(int[] nums) {
// 배열 원소의 수가 1인 경우와 2인 경우 조건식
if(nums.length == 1){
return nums[0];
}else if(nums.length == 2){
if(nums[0] <= nums[1]){
return nums[1];
}else if(nums[0] >= nums[1]){
return nums[0];
}
}
// 버블 정렬을 통해 값 정렬
for(int i = 0; i < nums.length-1; i++) {
for(int j = 0; j < nums.length-1-i; j++) {
if(nums[j] > nums[j+1]) {
int tmp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = tmp;
}
}
}
// 중간값 저장할 변수, 값 크기 순서 저장할 변수
int temp = nums[nums.length - 1];
int val = 1;
// 값이 더 적어질 경우, 값 크기 순서 늘리고 중간값 변경
for(int k = nums.length-1; k >= 0; k--){
if(nums[k] < temp){
val++;
temp = nums[k];
}
if(val == 3){
return nums[k];
}
}
return nums[nums.length-1];
}
}
'프로그래밍 > Java' 카테고리의 다른 글
[자바 JAVA/알고리즘] LeetCode : Squares of a Sorted Array (0) | 2024.02.19 |
---|---|
[자바 JAVA/알고리즘] LeetCode : Height Checker (1) | 2024.02.01 |
[자바 JAVA/알고리즘]백준 11047번 : 동전 0 (1) | 2024.01.31 |
[자바 JAVA/알고리즘]백준 11399번 : ATM (1) | 2024.01.28 |
[자바 JAVA/알고리즘]백준 25314번 : 코딩은 체육과목 입니다 (0) | 2023.12.09 |