KDLiam

[Programmers ์ฝ”๋”ฉ ๊ธฐ์ดˆ ํŠธ๋ ˆ์ด๋‹ : Java] ๋งˆ์ง€๋ง‰ ๋‘ ์›์†Œ ๋ณธ๋ฌธ

Problems(Java)/Programmers

[Programmers ์ฝ”๋”ฉ ๊ธฐ์ดˆ ํŠธ๋ ˆ์ด๋‹ : Java] ๋งˆ์ง€๋ง‰ ๋‘ ์›์†Œ

KDLiam 2025. 10. 13. 11:13

๐Ÿ”— ๋ฌธ์ œ ๋งํฌ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 181927 - ๋งˆ์ง€๋ง‰ ๋‘ ์›์†Œ


๐Ÿ’ก ๋ฌธ์ œ ์š”์•ฝ

์ •์ˆ˜ ๋ฐฐ์—ด num_list๊ฐ€ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

  • ๋งˆ์ง€๋ง‰ ์›์†Œ(num_list[-1])๊ฐ€ ๊ทธ ์ด์ „ ์›์†Œ(num_list[-2])๋ณด๋‹ค ํฌ๋ฉด
    → ๋งˆ์ง€๋ง‰ ์›์†Œ์— ๋‘ ์›์†Œ์˜ ์ฐจ๋ฅผ ์ถ”๊ฐ€
  • ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด
    → ๋งˆ์ง€๋ง‰ ์›์†Œ์— 2๋ฅผ ๊ณฑํ•œ ๊ฐ’์„ ์ถ”๊ฐ€
  • ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ
num_list = [2, 1, 6]
๋งˆ์ง€๋ง‰ ๋‘ ์ˆ˜: 1, 6 → 6 > 1 → ์ฐจ์ด 5
๊ฒฐ๊ณผ = [2, 1, 6, 5]


๐Ÿงฉ ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ

 

 

class Solution {
    public int[] solution(int[] num_list) {
        
        int numListLen = num_list.length;
        int[] answer = new int[numListLen+1];
        
        for(int i=0;i<numListLen;i++) {
            answer[i] = num_list[i];
        }
        
        if(num_list[numListLen-1] > num_list[numListLen-2]) {
            answer[numListLen] = num_list[numListLen-1] - num_list[numListLen-2];
        } else {
            answer[numListLen] = num_list[numListLen-1] * 2;
        }
    
        return answer;
        
    }
}

๐Ÿง ๋ถ„์„

  • ๋ฐฐ์—ด์„ ์ƒˆ๋กœ ๋งŒ๋“ค๊ณ , ์ง์ ‘ for๋ฌธ์œผ๋กœ ๊ธฐ์กด ๋ฐฐ์—ด์˜ ๊ฐ’์„ ๋ณต์‚ฌ
  • ์ž‘๋™์€ ํ•˜์ง€๋งŒ ์ฝ”๋“œ๊ฐ€ ์žฅํ™ฉํ•จ
  • ์ž๋ฐ”์—์„œ๋Š” ์ด๋Ÿฐ ๋‹จ์ˆœ ๋ณต์‚ฌ๋ฅผ Arrays.copyOf()๋กœ ํ•œ ์ค„์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ

โœ… ๊ฐœ์„ ํ•œ ์ฝ”๋“œ

 
import java.util.Arrays;

class Solution {
    public int[] solution(int[] num_list) {
        
        int numListLen = num_list.length;
        
        int[] answer = Arrays.copyOf(num_list, numListLen+1);
        
        if(num_list[numListLen-1] > num_list[numListLen-2]) {
            answer[numListLen] = num_list[numListLen-1] - num_list[numListLen-2];
        } else {
            answer[numListLen] = num_list[numListLen-1] * 2;
        }
        
        return answer;
        
    }
}

โšก ๊ฐœ์„  ํฌ์ธํŠธ

ํ•ญ๋ชฉ๊ธฐ์กด ์ฝ”๋“œ๊ฐœ์„  ์ฝ”๋“œ
๋ฐฐ์—ด ๋ณต์‚ฌ ์ง์ ‘ for๋ฌธ ์ž‘์„ฑ Arrays.copyOf() ํ•œ ์ค„
๊ฐ€๋…์„ฑ ๋‚ฎ์Œ ๋งค์šฐ ๋†’์Œ
์„ฑ๋Šฅ ๊ฑฐ์˜ ๋™์ผ (O(n)) ๋™์ผ (๋‚ด๋ถ€์ ์œผ๋กœ System.arraycopy ์‚ฌ์šฉ)
์ฝ”๋“œ ๊ธธ์ด ๊ธธ๊ณ  ๋ฐ˜๋ณต์  ๊ฐ„๊ฒฐํ•˜๊ณ  ์ง๊ด€์ 

๐Ÿง  ํ•ต์‹ฌ ๋ฐฐ์›€ ํฌ์ธํŠธ

  • Arrays.copyOf(original, newLength)๋Š”
    → ๊ธฐ์กด ๋ฐฐ์—ด์„ ์ƒˆ ๊ธธ์ด๋กœ ๋ณต์‚ฌํ•˜๋ฉด์„œ ์ƒˆ ๋ฐฐ์—ด ๋ฐ˜ํ™˜
  • ๋‚ด๋ถ€์ ์œผ๋กœ System.arraycopy()๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋น ๋ฅด๊ณ  ์•ˆ์ „
  • ๋ฐฐ์—ด์— ์ƒˆ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ์ž์ฃผ ์“ฐ์ด๋Š” ํ‘œ์ค€์  ๋ฐฉ๋ฒ•

โœ๏ธ ํ•œ์ค„ ์š”์•ฝ

“์ง์ ‘ ๋ณต์‚ฌ๋ณด๋‹ค๋Š” ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ ๊ทน ํ™œ์šฉํ•˜์ž.
Arrays.copyOf()๋Š” ์ฝ”๋“œ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค.”