Coding Test

[PCCP] ์‹œ๊ฐ„๋ณต์žก๋„ - ๋‘ ์ˆ˜์˜ ํ•ฉ | ์ž๋ฐ” (java)

ํ”„๋กœ๊ทธ๋ž˜๋จธ ์˜ค์›” 2023. 9. 18.

๐Ÿ“œ๋‘ ์ˆ˜์˜ ํ•ฉ

PCCP(์ฝ”๋”ฉ์ „๋ฌธ์—ญ๋Ÿ‰์ธ์ฆ)

 

๋น„์Šทํ•œ ๋ฌธ์ œ - ๋ฆฌํŠธ์ฝ”๋“œ 1๋ฒˆ

https://leetcode.com/problems/two-sum/description/

 

LeetCode - The World's Leading Online Programming Learning Platform

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

 

 

๐Ÿ’ก์‹œ๊ฐ„ ๋ณต์žก๋„์™€ ๊ณต๊ฐ„ ๋ณต์žก๋„๋ฅผ ๋‹ค๋ฅด๊ฒŒ ํ•˜์—ฌ ๋ฌธ์ œ ํ’€์–ด๋ณด๊ธฐ

 

โ—๋ฌธ์ œ ์„ค๋ช…

์ •์ˆ˜ ์ˆ˜์—ด ์•ˆ์—์„œ ์ˆ˜์—ด์˜ ์›์†Œ ๋‘ ๊ฐœ์˜ ํ•ฉ์ด target๊ฐ’์ด ๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ฐพ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
๋งค๊ฐœ๋ณ€์ˆ˜ nums์— ๊ธธ์ด๊ฐ€ n์ธ ์ˆ˜์—ด์ด ์ฃผ์–ด์ง€๊ณ , ๋งค๊ฐœ๋ณ€์ˆ˜ target์— ์ž์—ฐ์ˆ˜ ๊ฐ’์ด ์ฃผ์–ด์ง€๋ฉด ์ด ์ˆ˜์—ด์•ˆ์—์„œ ๋‘ ๊ฐœ์˜ ์›์†Œ์˜ ํ•ฉ์ด ์ •์ˆ˜ target๊ฐ’์ด ๋˜๋Š” ๋‘ ์›์†Œ๋ฅผ ๊ตฌํ•ด ๋ฐฐ์—ด์— ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋‹ด์•„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
๋‘ ๊ฐœ์˜ ์›์†Œ์˜ ํ•ฉ์ด target๊ฐ’์ด ๋˜๋Š” ๊ฒฝ์šฐ๋Š” ์˜ค์ง ํ•œ๊ฐ€์ง€ ๋ฟ์ธ ์ž…๋ ฅ๋งŒ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ํ•œ ์›์†Œ๋ฅผ ๋‘ ๋ฒˆ ๋”ํ•˜๋Š” ๊ฒƒ์€ ์•ˆ๋ฉ๋‹ˆ๋‹ค. nums์˜ ๊ฐ ์›์†Œ๋Š” ์œ ์ผ๊ฐ’์ž…๋‹ˆ๋‹ค.
๋‹ต์ด ์—†์„ ๊ฒฝ์šฐ [0, 0]์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 

 

โ—์ž…์ถœ๋ ฅ ์˜ˆ

 

โ—์ œํ•œ์‚ฌํ•ญ

  • nums์˜ ๊ธธ์ด 3 <= n <= 100,000
  • ๋ฐฐ์—ด nums์˜ ์›์†Œ๋Š” ์ •์ˆ˜์ž…๋‹ˆ๋‹ค. -10,000 <= nums[i] <= 10,000
  •  -20,000 <= target <= 20,000

 

 

โœ๏ธ ๋ฒ ์ด์Šค ์ฝ”๋“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.*;
class Solution {
    public int[] solution(int[] nums, int target){
        int[] answer = new int[2];
        
        return answer;
    }
 
    public static void main(String[] args){
        Solution T = new Solution();
        System.out.println(Arrays.toString(T.solution(new int[]{372129158}, 12)));
        System.out.println(Arrays.toString(T.solution(new int[]{211230156291914}, 24)));
        System.out.println(Arrays.toString(T.solution(new int[]{12185821272225162}, 28)));
        System.out.println(Arrays.toString(T.solution(new int[]{111768219191225162}, 26)));
        System.out.println(Arrays.toString(T.solution(new int[]{7512-9-1222-30-35-21}, -14)));
        System.out.println(Arrays.toString(T.solution(new int[]{751220}, 15)));
    }
}
cs

 

 


๐Ÿช„ ํ’€์ด๋ฒ• 1 - ์‹œ๊ฐ„ ๋ณต์žก๋„ :  O(N^2)  ๊ณต๊ฐ„ ๋ณต์žก๋„ : O(1)

 

์ด์ค‘ for๋ฌธ์„ ์‚ฌ์šฉํ•œ O(N^2) ํ’€์ด๋ฒ•

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
import java.util.*;
class Solution {
    public int[] solution(int[] nums, int target){
        int[] answer = new int[2];
        for (int i = 0; i < nums.length - 1; i++) {
            for (int y = i + 1; y < nums.length; y++) {
                if (nums[i] + nums[y] == target) {
                    if (nums[i] > nums[y]) {
                        answer[0= nums[y];
                        answer[1= nums[i];
                    } else {
                        answer[0= nums[i];
                        answer[1= nums[y];
                    }
                    break;
                }
            }
        }
        return answer;
    }
    public static void main(String[] args){
        Solution T = new Solution();
        System.out.println(Arrays.toString(T.solution(new int[]{372129158}, 12)));
        System.out.println(Arrays.toString(T.solution(new int[]{211230156291914}, 24)));
        System.out.println(Arrays.toString(T.solution(new int[]{12185821272225162}, 28)));
        System.out.println(Arrays.toString(T.solution(new int[]{111768219191225162}, 26)));
        System.out.println(Arrays.toString(T.solution(new int[]{7512-9-1222-30-35-21}, -14)));
        System.out.println(Arrays.toString(T.solution(new int[]{751220}, 15)));
    }
}
cs

 

 

 

๐Ÿช„ ํ’€์ด๋ฒ• 2 - ์‹œ๊ฐ„ ๋ณต์žก๋„ :  O(NlogN)  ๊ณต๊ฐ„ ๋ณต์žก๋„ : O(1)

Arrays.sort()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ (O(NlogN) ) ๋ฐ˜๋ณต๋ฌธ์„ ํ•œ ๋ฒˆ ์‚ฌ์šฉํ•˜์—ฌ ํ’€์ด

ํˆฌํฌ์ธํ„ฐ

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
import java.util.*;
class Solution {
    public int[] solution(int[] nums, int target){
        int[] answer = new int[2];
        Arrays.sort(nums);
        int smallIdx = 0;
        int bigIdx = nums.length - 1;
        while (smallIdx < bigIdx) {
            if (nums[smallIdx] + nums[bigIdx] == target) {
                answer[0= nums[smallIdx];
                answer[1= nums[bigIdx];
                break;
            } else if (nums[smallIdx] + nums[bigIdx] > target) {
                bigIdx--;
            } else {
                smallIdx++;
            }
        }
        return answer;    
    }
    public static void main(String[] args){
        Solution T = new Solution();
        System.out.println(Arrays.toString(T.solution(new int[]{372129158}, 12)));
        System.out.println(Arrays.toString(T.solution(new int[]{211230156291914}, 24)));
        System.out.println(Arrays.toString(T.solution(new int[]{12185821272225162}, 28)));
        System.out.println(Arrays.toString(T.solution(new int[]{111768219191225162}, 26)));
        System.out.println(Arrays.toString(T.solution(new int[]{7512-9-1222-30-35-21}, -14)));
        System.out.println(Arrays.toString(T.solution(new int[]{751220}, 15)));
    }
}
cs

 

 

๐Ÿช„ ํ’€์ด๋ฒ• 3 - ์‹œ๊ฐ„ ๋ณต์žก๋„ :  O(N)  ๊ณต๊ฐ„ ๋ณต์žก๋„ : O(N)

๊ณต๊ฐ„ ๋ณต์žก๋„๊ฐ€ ์˜ฌ๋ผ๊ฐ„ ๋Œ€์‹  ๋ฐ˜๋ณต๋ฌธ์„ ํ•œ๋ฒˆ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ ํ’€๊ธฐ

HashMap ์‚ฌ์šฉ

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
32
import java.util.*;
class Solution {
    public int[] solution(int[] nums, int target){
        HashMap<Integer, Integer> map = new HashMap<>();
        int[] answer = new int[2];
        for (int x : nums) {
            int y = target - x;
            if (map.containsKey(y)) {
                if (x > y) {
                    answer[0= y;
                    answer[1= x;
                } else {
                    answer[0= x;
                    answer[1= y;
                }
                break;
            } else {
                map.put(x, 1);
            }
        }
        return answer;
    }
    public static void main(String[] args){
        Solution T = new Solution();
        System.out.println(Arrays.toString(T.solution(new int[]{372129158}, 12)));
        System.out.println(Arrays.toString(T.solution(new int[]{211230156291914}, 24)));
        System.out.println(Arrays.toString(T.solution(new int[]{12185821272225162}, 28)));
        System.out.println(Arrays.toString(T.solution(new int[]{111768219191225162}, 26)));
        System.out.println(Arrays.toString(T.solution(new int[]{7512-9-1222-30-35-21}, -14)));
        System.out.println(Arrays.toString(T.solution(new int[]{751220}, 15)));
    }
}
cs

 

๋Œ“๊ธ€