티스토리 뷰
https://app.codility.com/programmers/lessons/2-arrays/odd_occurrences_in_array/
배열 안에 있는 수 중, 짝이 없는 애만 찾아서 리턴하면 된다.
처음에 시도한 방법
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
class Solution {
public int solution(int[] A) {
int answer = 0;
for(int i = 0; i < A.length; i++) {
if(A[i] == 0) {
continue;
}
for(int j = i+1; j < A.length; j++) {
if(A[i] == A[j]) {
A[i] = 0;
A[j] = 0;
break;
}
}
if(A[i] != 0) {
answer = A[i];
}
return answer;
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
이중 for문은 시간복잡도를 늘리는 가장 쉬운 방법이라고 생각해서 되도록 사용하지 않으려하는데...
알고리즘 문제를 풀다보면 이를 쓰도록 만드는 문제가 참 많은 것 같다.
이것도 역시 그런 미끼를 던졌고 난 물었다.
풀긴 풀었지만 효율성에서 점수가 깎여서 66%가 나오고 말았다.
찾아보니 많은 분들이 XOR 비트연산으로 해결한 것 같다.
XOR 연산은 1과 다른 수(1,0)면 1을 같은 수(1,1 / 0,0)면 0을 리턴하는데,
예를 들어, 1011 ^ 1010 = 0001이 된다.
처음엔 이 방법이 같은 수가 연속될 때만 0으로 리턴하는 줄 알았는데 상관없이 계속 XOR 연산을 해나가다보면
같은 수는 전부 0이 되고 짝이 없는 수만 그대로 리턴이 되는 것 같다.
(임의의 수로 테스트를 해보니깐 그렇게 되는데 알면서도 신기한 이 광경)
1
2
3
4
5
6
7
8
9
10
11
|
class Solution {
public int solution(int[] A) {
int answer = 0;
for(int num : A) {
answer ^= num;
}
return answer;
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
'기초CS > 알고리즘' 카테고리의 다른 글
[프로그래머스] 알고리즘 연습 문제 : 기능개발 (자바/JAVA) (0) | 2019.08.06 |
---|---|
[Codility] Lesson 2 : CyclicRotation (자바/JAVA) (0) | 2019.07.16 |
[Codility] Lesson 1 : BinaryGap (자바/JAVA) (0) | 2019.07.16 |
[프로그래머스] 알고리즘 연습 문제 : 124 나라의 숫자 (자바/JAVA) (0) | 2019.06.21 |
[프로그래머스] 알고리즘 연습 문제 : 탑 (자바/JAVA) (0) | 2019.06.21 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 완주하지 못한 선수
- K번째수
- 파이팅코리아
- cgv
- 기능개발
- 스프링 부트
- 쇠막대기
- 타겟 넘버
- 124 나라의 숫자
- 다음 맵 api
- 문자열 내 마음대로 정렬하기
- 예매 알림
- 노션트렐로광고X
- 객체지향과 디자인패턴
- FrogJmp
- 프로그래머스
- 카카오인턴
- 최솟값
- 텔레그램
- codility
- 더 나은 내일
- java
- 알고리즘
- json
- AWS
- 안드로이드 스튜디오
- Spring
- API
- 자바
- 맵 api
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함