
문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
하나를 제외한 모든 요소가 두 번 나타나는 정수형 배열이 주어질때, 유일한 요소를 찾아라.
a = [1, 2, 3, 4, 3, 2, 1]
유일한 요소는 4이다.
lonelyinteger 함수를 완성해라.
lonelyinteger 함수는 아래와 같은 매개변수를 가지고 있다.
오름차순으로 정렬을 하고, 해당 인덱스의 값이 다음 인덱스의 값과 같은지 비교하는 방법으로 문제를 해결했다.
주어진 리스트 a를 오름차순으로 정렬한다.
a.sort(Comparator.naturalOrder());
for문을 사용해서 a.size() - 1만큼 반복한다. 매 반복마다 i와 i + 1의 인덱스에 있는 값을 비교하고 같으면 i를 증가시키고, 그렇지 않다면 i의 값을 반환한다. 이때 i를 증가시키는 이유는 같은 값이 쌍으로 있는지 확인하기 때문에 한번 더 증가시켜서 다음 다른 값을 확인하기 위해서다.
for(int i = 0; i < a.size() - 1; i++){
if(a.get(i) == a.get(i + 1)){
i++;
}else{
return a.get(i);
}
}
반복문이 끝날때까지 값을 찾지 못했다면 마지막 인덱스의 값을 반환한다. 이것이 a.size() - 1까지 반복한 이유이다.
return a.get(a.size() - 1);
public static int lonelyinteger(List<Integer> a) {
a.sort(Comparator.naturalOrder());
for(int i = 0; i < a.size() - 1; i++){
if(a.get(i) == a.get(i + 1)){
i++;
}else{
return a.get(i);
}
}
return a.get(a.size() - 1);
}