n๊ฐ์ ์ ์ ๋ฐฐ์ด์ด ์ฃผ์ด์ก์ ๋ ๋ฐฐ์ด์ ๋ ๊ฐ ์์์ ํฉ์ผ๋ก target ๊ฐ์ ๋ง์กฑํ๋ ๋ ๊ฐ ์์์ ์ธ๋ฑ์ค๋ฅผ ๊ตฌํ์ฌ๋ผ.
(์๊ฐ๋ณต์ก๋ O(N) ์ ํ)
์๊ฐ๋ณต์ก๋๊ฐ O(N)์ผ๋ก ์ ํ๋์๊ธฐ ๋๋ฌธ์ ๋ ๊ฐ for๋ฌธ์ผ๋ก ๋ ๊ฐ ์์์ ๋ชจ๋ ์กฐํฉ์ ๋ณด๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
ํ ๊ฐ์ for๋ฌธ์ผ๋ก ํ์ด๋ด๊ธฐ ์ํด Map์ ์ฌ์ฉํ์์ต๋๋ค.
class Solution {
public int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> map = new HashMap<>();
for (int i=0;i<nums.length;i++) {
if (!map.containsKey(nums[i])) {
map.put(target-nums[i], i);
} else {
return new int[]{map.get(nums[i]), i};
}
}
return new int[] {0,0};
}
}
Map์ ์ ์ฅ๋๋ key๊ฐ์ target์์ ๋ฐฐ์ด์ i๋ฒ์งธ ๊ฐ์ ๋บ ๊ฐ์ ์ ์ฅ
๋ง์ฝ Map์ ํค ๊ฐ๊ณผ ๊ฐ์ ๋ฐฐ์ด์ ์์๊ฐ ๋ค์ด์จ๋ค๋ฉด ๊ทธ ๋ ๊ฐ ์์์ ํฉ์ด target์ธ ๊ฒ.
(Map์ key๊ฐ์ ์ด๋ฏธ ํด๋นํ๋ ์ธ๋ฑ์ค ๋ฒ์งธ ๊ฐ์ ๋บ ๊ฐ์ด๊ธฐ ๋๋ฌธ)