https://programmers.co.kr/learn/courses/30/lessons/1845
// 테스트코드
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class Quiz1_ponketmonTest {
Quiz1_ponketmon q;
@BeforeEach
void setUp() {
q = new Quiz1_ponketmon();
}
@Test
void test1(){
assertEquals(2,q.solution(new int[]{3,1,2,3}));
}
@Test
void test2(){
assertEquals(3,q.solution(new int[]{3,3,3,2,2,4}));
}
@Test
void test3(){
assertEquals(2,q.solution(new int[]{3,3,3,2,2,2}));
}
}
// 프로덕션코드
import java.util.Arrays;
public class Quiz1_ponketmon {
public int solution(int[] nums) {
int possibleMaxNumber = nums.length/2;
return checkMaxNumber(possibleMaxNumber, nums);
}
int checkMaxNumber(int possibleMaxNumber, int[] nums){
Arrays.sort(nums);
int lastNumber = nums[0];
int maxNumber = 1;
for(int i=1; i<nums.length; i++){
if(possibleMaxNumber == maxNumber){
return possibleMaxNumber;
}
if(nums[i] != lastNumber){
lastNumber = nums[i];
maxNumber++;
}
else{
continue;
}
}
return maxNumber;
}
}
// 성공! lastNumber -> lastNumberChecked로 바꾸는 게 이해가 더 쉽겠다.
import java.util.Arrays;
public class Quiz1_ponketmon {
public int solution(int[] nums) {
int possibleMaxNumber = nums.length/2;
return checkMaxNumber(possibleMaxNumber, nums);
}
int checkMaxNumber(int possibleMaxNumber, int[] nums){
Arrays.sort(nums);
int lastNumberChecked = nums[0];
int maxNumber = 1;
for(int i=1; i<nums.length; i++){
if(possibleMaxNumber == maxNumber){
return possibleMaxNumber;
}
if(nums[i] != lastNumberChecked){
lastNumberChecked = nums[i];
maxNumber++;
}
else{
continue;
}
}
return maxNumber;
}
}
// 성공! 아.. for문 스트림이라는걸 이용할 수 있다는데... 저번에 iterator랑 같이 정리해서 JAVA폴더에 올리겠다.
'코딩테스트연습 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 - JAVA] 두 개 뽑아서 더하기 (0) | 2021.12.02 |
---|---|
[프로그래머스 - JAVA] 3진법 뒤집기 (0) | 2021.12.01 |
[프로그래머스 - JAVA] 체육복 (0) | 2021.11.28 |
[프로그래머스 - JAVA] 완주하지 못한 선수 (0) | 2021.11.27 |
[프로그래머스 - JAVA] K번째수 (0) | 2021.11.26 |