반응형
Leetcode
https://leetcode.com/problemset/all/
문제풀이
nums : int[] 타입 배열
target : nums 배열에 속한 2개의 index 합
output : target에 해당하는 2개의 nums배열 index 반환
배열을 2개의 배열로 돌면서 값을 비교해서 동일하면 반환하는 형태로구현 해보도록 하겠습니다.
우선 테스트 코드에 아래처럼 짜보고
package com.codeing.code.leetcode;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.HashMap;
import java.util.Map;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
@SpringBootTest
class TwoSumTest {
public int[] twoSum(int[] nums, int target) {
int[] answer = {};
for (int i = 0; i < nums.length -1; i++) {
for (int j = i+1; j < nums.length; j++) {
if(nums[i]+nums[j] == target){
answer = new int[]{i,j};
break;
}
}
}
return answer;
}
public int[] twoSumMap(int[] nums, int target) {
Map<Integer,Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
if(map.containsKey(nums[i])){
return new int[]{map.get(nums[i]),i};
}
//9-2 7, 0
//9-7 2, 1
//9-11 -2, 2
//9-15 -6, 3
map.put(target - nums[i], i);
}
return new int[]{};
}
@Test
void twoSumTest(){
int[] nums = new int[]{2, 7, 11, 15};
int target = 9;
int[] testValue = new int[]{0,1};
assertArrayEquals(twoSum(nums,target),testValue);
}
@Test
void twoSumMapTest(){
int[] nums = new int[]{2, 7, 11, 15};
int target = 26;
int[] testValue = new int[]{2,3};
assertArrayEquals(twoSumMap(nums,target),testValue);
}
}
정상적으로 잘나오는게 확인이 되었다면
Leetcode에 해당 코드가 잘동작하는지 submit해보겠습니다.
관련 코드는 github에 공유드립니다.
https://github.com/lswteen/codeing/blob/main/src/main/java/com/codeing/code/leetcode/TwoSum.java
'프로그래밍언어 > 알고리즘' 카테고리의 다른 글
개발자 면접 알고리즘 공부 시작하는 방법, 1-2개월만에 갑자기 잘할수는 없습니다. (0) | 2022.11.12 |
---|---|
Leetcode 문제풀이 난이도 Midium 94. Binary Tree Inorder Traversal 트리 인오더 (0) | 2022.09.09 |
알고리즘 8편 Hash 난이도3 베스트앨범 lamda 함수형 코틀린(kotlin) 으로 시작하는 문제해결방법 (0) | 2021.10.04 |
알고리즘 7편 Hash 난이도2 key value 위장 의상경우의수 코틀린(kotlin) 으로 시작하는 문제해결방법 (0) | 2021.09.21 |
알고리즘 6편 Hash 로 2개 배열 중복값 찾고 지우기 코틀린(kotlin) 으로 시작하는 문제해결방법 (0) | 2021.09.18 |