[HackerRank] Lonely Integer

아르당·2024년 5월 27일

HackerRank

목록 보기
95/109
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

하나를 제외한 모든 요소가 두 번 나타나는 정수형 배열이 주어질때, 유일한 요소를 찾아라.

Example

a = [1, 2, 3, 4, 3, 2, 1]

유일한 요소는 4이다.

Function Description

lonelyinteger 함수를 완성해라.
lonelyinteger 함수는 아래와 같은 매개변수를 가지고 있다.

  • int a[n]: 정수형 배열

Returns

  • int: 오직 하나만 나타나는 요소

Constraints

  • 1 <= n < 100
  • n은 홀수이고, 하나의 유일한 요소가 있다.
  • 0 <= a[i] <= 100
  • 0 <= i < n

Solved

오름차순으로 정렬을 하고, 해당 인덱스의 값이 다음 인덱스의 값과 같은지 비교하는 방법으로 문제를 해결했다.

주어진 리스트 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);

All Code

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);
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글