728x90
https://school.programmers.co.kr/learn/courses/30/lessons/1845
문제 설명
맵을 쓰면 편하겠지만 굳이 쓸 필요가 있을까? 싶어서 처음에는 그냥 1차원 배열로만 풀어봤다.
class Solution {
public int solution(int[] nums) {
int answer = 0;
int[] chk = new int[nums.length + 1];
int i;
for (i = 0; i < nums.length; i++) {
chk[nums[i]]++;
if (answer >= nums.length / 2)
return answer;
else if (chk[nums[i]] == 1) answer++;
}
return answer;
}
}
결과는 처참히 실패...
긴 배열이 들어오면 런타임 에러가 걸려버리는 듯 하다
아래는 맵을 사용한 풀이
import java.util.*;
class Solution {
public int solution(int[] nums) {
int answer = 0;
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
map.putIfAbsent(nums[i], 0);
}
if (map.size() > nums.length / 2)
answer = nums.length / 2;
else
answer = map.size();
return answer;
}
}
통과했따
'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 스킬트리 - Java (0) | 2023.07.12 |
---|---|
[프로그래머스] 문자열 내 p와 y의 개수 - Java (0) | 2023.07.12 |
[프로그래머스] 주식가격 - Java (0) | 2023.07.11 |
[프로그래머스] 같은 숫자는 싫어 - Java (0) | 2023.07.07 |
[프로그래머스] 의상 - Java (0) | 2023.07.05 |