https://programmers.co.kr/learn/courses/30/lessons/1845
class Solution {
public int solution(int[] nums) {
int answer = 0;
int n = 0;
for(int i=0;i<nums.length;i++){
if(n!=nums[i]){ answer++; n=nums[i]; }
if(answer>=nums.length/2) break;
}
return answer;
}
}
첫번째 원소를 기준으로 배열 값들과 비교하고 같지 않으면 answer+1을 해주고 같으면 다시 검색하도록 구현하였다.
단, 최대값은 배열크기의 반이기 때문에 answer>=nums.length/2 일때 반복문을 빠져나오도록 설정해주었다.
그런데 ???
자꾸 틀렸다고 나온다. 모르겠다.
hashset으로 풀면 쉽게 풀 수 있다.
import java.util.HashSet;
class Solution {
public int solution(int[] nums) {
int answer = 0;
HashSet<Integer>set = new HashSet<Integer>();
for(int i=0;i<nums.length;i++){
set.add(nums[i]); }
if(set.size()>=nums.length/2) answer=nums.length/2;
else answer=set.size();
return answer;
}
}
hashset에 원소를 추가하고 중복이 제거된 set의 크기가 배열크기의 반보다 크거나 작을때는 최대값이 num.length/2이고 작으면 set의 크기가 최대값이 된다.
중복제거 -> hashset 자료구조 이해할 것
'알고리즘 > 문제 풀이' 카테고리의 다른 글
[Java] 프로그래머스 > 자릿수 더하기 (0) | 2022.01.13 |
---|---|
[Java] 프로그래머스 > 두 개 뽑아서 더하기 (0) | 2022.01.13 |
[Java] 백준 9251번 LCS (0) | 2021.11.09 |
[Java] 백준 11054번 가장 긴 바이토닉 부분 수열 (0) | 2021.11.09 |
[Java] 프로그래머스 > 모의고사 (0) | 2021.08.29 |
댓글