배열 안에서 더해서 타겟을 만들 수 있는 수를 구해야 한다 - 라고 생각하니 어려웠지만
포문을 돌려서 배열[0] 수부터 비교해본다 - 라고 생각하니
10 - 앞의 수가 나머지 배열 숫자 중에 있는지 확인하면 되겠구나 - 가닥이 잡혔다.
그리고 앞에서부터 다 비교를 해 나갈 것이니
굳이 뒤의 수와 비교할 필요는 없었다. 굿!
문제
int[] nums = {2,8,11,21};
int target = 10;
풀이
public class test0912 {
public static void main(String[] args) {
test0912 test = new test0912();
//Two Sum
int[] nums = {2,8,11,21};
int target = 10;
int[] result = test.solve(nums, target);
for(int i:result) {
System.out.print(i+" ");
}
}
public int[] solve(int[] a, int b) {
//담을 그릇 정하기
Map<Integer,Integer> map = new HashMap<>();
int[] c = new int[2];
//for
for(int i=0;i<a.length;i++) {
if(map.containsKey(a[i])) {
int value = map.get(a[i]);
c[0] = value + 1;
c[1] = i + 1; //nums[i] 즉 i 자리에서 8을 찾은 것이므로 i+1을 바로 인덱스로 줄 수 있다
} else {
map.put(b-a[i], i);
// nums[0]은 2이지만 2를 넣어봤자 8을 찾기 어렵다. 8을 넣어두면 그냥 containsKey로 손쉽게 찾을 수 있음
//key 10-2=8 value 0 (2의 배열 자리수)
}
}
return c;
}
}
'to be 개발자' 카테고리의 다른 글
맥 리액트 설치 오류 해결 (웹팩 버전 안맞고, json webpack 지우라고 뜨는거) (0) | 2020.10.06 |
---|---|
[알고리즘_자바] Daily Temperature 배열 뒤에 나오는 더 큰 오브젝트와의 거리 구하는 법 (Stack 활용법) (0) | 2020.09.30 |
[알고리즘_자바] MoveZero 배열 에서 0은 다 뒤로 보내고 나머지는 같은 순서로 앞에서부터 담기 (0) | 2020.09.18 |
[알고리즘_자바] MeetingRoom 미팅룸 사용 시간 겹치지 않는지 확인하기 (0) | 2020.09.17 |
도커docker 로 맥mac에 오라클oracle SQL Developer 깔기..! (0) | 2020.08.27 |
댓글