반응형
🖥 사용 언어: Java 자바
Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target. You may assume that each input would have exactly one solution, and you may not use the same element twice. You can return the answer in any order.
⌨️ 나의 풀이
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] result = new int[2];
for (int i = 0; i < nums.length; ++i) {
for (int j = i+1; j < nums.length; ++j) {
if (nums[i] + nums[j] == target) {
result[0] = i;
result[1] = j;
break;
}
}
}
return result;
}
}
📉 Runtime
0ms 가 나왔다던 샘플 코드는 아래와 같았다.
class Solution {
public int[] twoSum(int[] nums, int target) {
for(int i = 1; i < nums.length; i++) {
for(int j = 0; j + i < nums.length; j++) {
if(nums[j] + nums[j + i] == target) {
return new int[] {j, j + i};
}
}
}
return new int[] {};
}
}
위 코드처럼 처음에 배열 선언 안하고, 바로 리턴해줘도 괜찮은 것 같다. 다만 두번째 for문에서 j + i < nums.length로 한 게 얼마나 영향이 있었던건지, 또 i가 0이 아닌 1부터 시작한 이유에 대해선 좀더 생각해봐야할 것 같다.
📈 Memory
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] numsCopy = new int[2];
for(int m = 0; m< nums.length; m++){
int currentNumber = nums[m];
for(int i = m + 1; i < nums.length; i++){
if(currentNumber + nums[i] == target){
numsCopy[0] = m;
numsCopy[1] = i;
break;
}
}
}
return numsCopy;
}
}
위 코드가 내 코드보다 좀더 빨랐는데, 차이는 currentNumber를 만들었는데, 얕은 나의 지식으로는 변수를 생성하면 메모리를 더 차지할 줄 알았는데 아니었다. 매번 이전꺼를 다시 찾아야해서 그런건가....
반응형
'코딩테스트 연습 > JAVA' 카테고리의 다른 글
[JAVA/알고리즘] 크레인 인형뽑기 게임 (0) | 2022.03.20 |
---|---|
[JAVA/알고리즘] 최댓값과 최솟값 (0) | 2022.03.15 |
[JAVA/알고리즘] 최소직사각형 (0) | 2022.03.15 |
[JAVA/알고리즘] 3진법 뒤집기 (0) | 2022.03.14 |
[JAVA/알고리즘] 다트게임 (0) | 2022.03.14 |