Coding Test

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - 12971 : ์Šคํ‹ฐ์ปค ๋ชจ์œผ๊ธฐ(2) - ๋ฌธ์ œ ํ’€์ด ( ์ž๋ฐ” / java)

ํ”„๋กœ๊ทธ๋ž˜๋จธ ์˜ค์›” 2024. 5. 31.

๐Ÿ“Œ๋ฌธ์ œ ์„ค๋ช…

N๊ฐœ์˜ ์Šคํ‹ฐ์ปค๊ฐ€ ์›ํ˜•์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๊ทธ๋ฆผ์€ N = 8์ธ ๊ฒฝ์šฐ์˜ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.



์›ํ˜•์œผ๋กœ ์—ฐ๊ฒฐ๋œ ์Šคํ‹ฐ์ปค์—์„œ ๋ช‡ ์žฅ์˜ ์Šคํ‹ฐ์ปค๋ฅผ ๋œฏ์–ด๋‚ด์–ด ๋œฏ์–ด๋‚ธ ์Šคํ‹ฐ์ปค์— ์ ํžŒ ์ˆซ์ž์˜ ํ•ฉ์ด ์ตœ๋Œ€๊ฐ€ ๋˜๋„๋ก ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‹จ ์Šคํ‹ฐ์ปค ํ•œ ์žฅ์„ ๋œฏ์–ด๋‚ด๋ฉด ์–‘์ชฝ์œผ๋กœ ์ธ์ ‘ํ•ด์žˆ๋Š” ์Šคํ‹ฐ์ปค๋Š” ์ฐข์–ด์ ธ์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์œ„ ๊ทธ๋ฆผ์—์„œ 14๊ฐ€ ์ ํžŒ ์Šคํ‹ฐ์ปค๋ฅผ ๋œฏ์œผ๋ฉด ์ธ์ ‘ํ•ด์žˆ๋Š” 10, 6์ด ์ ํžŒ ์Šคํ‹ฐ์ปค๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์Šคํ‹ฐ์ปค์— ์ ํžŒ ์ˆซ์ž๊ฐ€ ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์Šคํ‹ฐ์ปค๋ฅผ ๋œฏ์–ด๋‚ด์–ด ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ˆซ์ž์˜ ํ•ฉ์˜ ์ตœ๋Œ“๊ฐ’์„ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”. ์›ํ˜•์˜ ์Šคํ‹ฐ์ปค ๋ชจ์–‘์„ ์œ„ํ•ด ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์›์†Œ์™€ ๋งˆ์ง€๋ง‰ ์›์†Œ๊ฐ€ ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค๊ณ  ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค.

 

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

sticker๋Š” ์›ํ˜•์œผ๋กœ ์—ฐ๊ฒฐ๋œ ์Šคํ‹ฐ์ปค์˜ ๊ฐ ์นธ์— ์ ํžŒ ์ˆซ์ž๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ๋“ค์–ด์žˆ๋Š” ๋ฐฐ์—ด๋กœ, ๊ธธ์ด(N)๋Š” 1 ์ด์ƒ 100,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
sticker์˜ ๊ฐ ์›์†Œ๋Š” ์Šคํ‹ฐ์ปค์˜ ๊ฐ ์นธ์— ์ ํžŒ ์ˆซ์ž์ด๋ฉฐ, ๊ฐ ์นธ์— ์ ํžŒ ์ˆซ์ž๋Š” 1 ์ด์ƒ 100 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.์›ํ˜•์˜ ์Šคํ‹ฐ์ปค ๋ชจ์–‘์„ ์œ„ํ•ด sticker ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์›์†Œ์™€ ๋งˆ์ง€๋ง‰ ์›์†Œ๊ฐ€ ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋‹ค๊ณ  ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค.

 

๐Ÿท๏ธ์ž…์ถœ๋ ฅ ์˜ˆ

sticker  answer
[14, 6, 5, 11, 3, 9, 2, 10] 36
[1, 3, 2, 5, 4] 8


์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…
์ž…์ถœ๋ ฅ ์˜ˆ #1
6, 11, 9, 10์ด ์ ํžŒ ์Šคํ‹ฐ์ปค๋ฅผ ๋–ผ์–ด ๋ƒˆ์„ ๋•Œ 36์œผ๋กœ ์ตœ๋Œ€๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2
3, 5๊ฐ€ ์ ํžŒ ์Šคํ‹ฐ์ปค๋ฅผ ๋–ผ์–ด ๋ƒˆ์„ ๋•Œ 8๋กœ ์ตœ๋Œ€๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.


๐Ÿช„ ํ’€์ด๋ฒ•

๋จผ์ € ๋ฌธ์ œ๋ฅผ ์ฝ๊ณ  ์–ด๋–ป๊ฒŒ ํ’€์–ด๋ด์•ผํ• ์ง€ ์ƒ๊ฐํ•ด ๋ณด์•˜๋‹ค.

๋ฌธ์ œ๋Š” ์„ ํƒํ•˜๊ณ  ์•ˆํ•˜๊ณ ์˜ ๊ฒฝ์šฐ๋ฅผ ๋”ฐ์ ธ์„œ ํ‘ธ๋Š” ์žฌ๊ท€๋กœ ํ’€๊ฑฐ๋‚˜ DP ๋กœ ํ’€ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  N ์„ ๋ณด์•˜์„ ๋•Œ 100,000 ์ด๋‹ˆ ์žฌ๊ท€๋กœ๋Š” ์ ˆ๋Œ€ ๋ชปํ’€๊ณ  ์ด์ค‘ for๋ฌธ์„ ์“ฐ๋Š” O(N^2) ๋„ ๋ถˆ๊ฐ€ํ•˜๊ณ  DP๋กœ ํ’€์–ด์•ผ ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

 

์ฒจ์—” ๋ง‰์—ฐํ•˜๊ฒŒ ํ™€์ˆ˜ ์ธ๋ฑ์Šค๋ฅผ ์ „๋ถ€๊ณ ๋ฅด๊ฑฐ๋‚˜, ์ง์ˆ˜ ์ธ๋ฑ์Šค๋ฅผ ์ „๋ถ€ ๊ณจ๋ผ ์ด ๋‘๊ฐ€์ง€ ๊ฒฝ์šฐ์˜ ์ˆ˜์ค‘ ํ•ฉ์ด ํฐ๊ฑธ ๊ณจ๋ผ๋„ ๋˜๋‚˜? ์ƒ๊ฐํ•˜๊ธฐ ์‰ฝ์ง€๋งŒ

[ 1, 22, 1, 1, 33, 1, 1, 1] ๊ฐ™์ด ํฐ์ˆ˜๊ฐ€ ํ™€์ˆ˜ ์ธ๋ฑ์Šค์—๋„ ํ•˜๋‚˜ ์ง์ˆ˜ ์ธ๋ฑ์Šค์—๋„ ํ•œ๊ฐœ ์”ฉ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๊ธฐ์— ์ €๋ ‡๊ฒŒ ๋‹จ์ˆœ ํ•˜๊ฒŒ ํ’€๋ฉด ์•ˆ๋œ๋‹ค.

 

์ธ๋ฑ์Šค๋ฅผ ๊ณ ๋ฅด๊ณ  ์•ˆ ๊ณจ๋ž์„ ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•˜๋ฉด์„œ DP๋กœ ํ’€์–ด์•ผ ํ•˜๋Š”๋ฐ, ๋ฌธ์ œ์˜ ์Šคํ‹ฐ์ปค๊ฐ€ ์›ํ˜•์ด๊ธฐ ๋•Œ๋ฌธ์— 0๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ฅผ ์‚ดํ•„ ๋• ๋งจ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค ๊นŒ์ง€ ์‚ดํŽด๋ด์•ผํ•œ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๊ณ , ๊ทธ๋Ÿผ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ 3 ์ด์ƒ ํ•„์š”ํ•˜๊ฒ ๊ตฌ๋‚˜ ์ƒ๊ฐํ–ˆ๋‹ค.

ํ•˜์ง€๋งŒ N์€ 1์ด์ƒ ๋ถ€ํ„ฐ ์‹œ์ž‘์ด๊ธฐ ๋•Œ๋ฌธ์— N์ด 1 ์ผ๋•Œ์™€ 2์ผ๋•Œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค˜์•ผํ•œ๋‹ค. ์•ˆ๊ทธ๋Ÿฌ๋ฉด ๋งˆ์ง€๋ง‰ ํ…Œ์ผ€์—์„œ ๋Ÿฐํƒ€์ž„์—๋Ÿฌ๊ฐ€ ์ƒ๊ธธ ๊ฒƒ์ด๋‹ค.

 

์ฒ˜์Œ์—” ์ ‘๊ทผ์„ 0๋ฒˆ์งธ ์ธ๋ฑ์Šค์™€ ๋งจ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๋ฅผ ๊ณ ๋ฅด๋Š” ์ผ€์ด์Šค ๋‘๊ฐ€์ง€๋กœ ์‹œ์ž‘ํ•˜๋ ค๊ณ  ํ–ˆ์ง€๋งŒ, ๋„ˆ๋ฌด ๋ณต์žกํ•œ ๊ฒƒ ๊ฐ™์•„. 0๋ฒˆ ์งธ์™€ 1๋ฒˆ์งธ๋กœ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋‚˜๋ˆ„์—ˆ๋‹ค.

 

[1, 2, 3, 4, 5, 6, 7, 8] ๋ผ๋Š” ์Šคํ‹ฐ์ปค๊ฐ€ ์žˆ๋Š”๊ฒฝ์šฐ๋ผ๋ฉด

 

์Šคํ‹ฐ์ปค 1์„ ๋–ผ๋ฉด์„œ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ (0๋ฒˆ ์งธ ์ธ๋ฑ์Šค)
[1, 2, 3, 4, 5, 6, 7] ๋งŒ ๊ฐ€์ง€๊ณ  dp๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ( 0๋ฒˆ์งธ๋ฅผ ๊ณ ๋ฆ„์œผ๋กœ์„œ ๋งจ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค์˜ ์ˆ˜๋ฅผ ๋ชป ๊ณ ๋ฅด๊ธฐ ๋•Œ๋ฌธ)

 

์Šคํ‹ฐ์ปค 2๋ฅผ ๋–ผ๋ฉด์„œ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ (1๋ฒˆ์งธ ์ธ๋ฑ์Šค)
[2, 3, 4, 5, 6, 7, 8] ๋งŒ ๊ฐ€์ง€๊ณ  dp๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

๋‘ ๊ฐ€์ง€ ์ผ€์ด์Šค๋กœ DP ๋ฌธ์ œ ํ’€์ด๋ฅผ ํ•˜๊ณ  ๋‘๊ฐ€์ง€ DP์˜ ๋งจ ๋งˆ์ง€๋ง‰ ๊ฐ’์ค‘ ๋” ํฐ ๊ฐ’์ด ์ •๋‹ต์ด ๋˜๊ฒŒ ๋œ๋‹ค.

 

1 - DP ํ’€์ด๋กœ ๋ฌธ์ œ ์ ‘๊ทผ

2 - ์ฃผ์–ด์ง„ ์Šคํ‹ฐ์ปค ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ 1์ผ๋•Œ, 2์ผ๋•Œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ

3 - 0๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ฅผ ๊ณ ๋ฅผ ๊ฒฝ์šฐ, 1๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ฅผ ๊ณ ๋ฅผ ๊ฒฝ์šฐ ๋‘๊ฐ€์ง€๋กœ DP ์ฒ˜๋ฆฌ

์œ„์˜ 3๊ฐ€์ง€ ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•ด ๋‚ด๋ฉด ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋‹ค.

 

 

๐Ÿ’ฏ ์ •๋‹ต ์ฝ”๋“œ

 1) ํ˜„์žฌ ์œ„์น˜๋ฅผ ๋ฝ‘๋Š” ๊ฒฝ์šฐ, dp[i - 2] + sticker[i]

 2) ํ˜„์žฌ ์œ„์น˜๋ฅผ ๋ฝ‘์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, dp[i - 1]

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
class Solution {
    public int solution(int sticker[]) {
        int size = sticker.length;
        if (size == 1return sticker[0];
        else if (size == 2return Math.max(sticker[0], sticker[1]);
 
        //0๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ฅผ ๊ณ ๋ฅด๋ฉด์„œ ์‹œ์ž‘ํ•œ ๊ฒฝ์šฐ
        int[] dp1 = new int[size - 1];
        dp1[0= sticker[0];
        dp1[1= sticker[0];
 
        for (int i = 2; i < sticker.length - 1; i++) {
            dp1[i] = Math.max(dp1[i - 1], dp1[i - 2+ sticker[i]);
        }
 
        //1๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ฅผ ๊ณ ๋ฅด๋ฉด์„œ ์‹œ์ž‘ํ•œ 
        int[] dp2 = new int[size];
        dp2[0= 0;
        dp2[1= sticker[1];
 
        for (int i = 2; i < size; i++) {
            dp2[i] = Math.max(dp2[i - 1], dp2[i - 2+ sticker[i]);
        }
 
        return Math.max(dp1[dp1.length - 1], dp2[dp2.length - 1]);
    }
}
cs

 

'Coding Test' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - 42883: ํฐ ์ˆ˜ ๋งŒ๋“ค๊ธฐ - ์ž๋ฐ” ํ’€์ด(10๋ฒˆ ์‹œ๊ฐ„์ดˆ๊ณผ)  (0) 2024.04.02
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - 76503 : ์›”๊ฐ„ ์ฝ”๋“œ ์ฑŒ๋ฆฐ์ง€ ์‹œ์ฆŒ2 - ๋ชจ๋‘ 0์œผ๋กœ ๋งŒ๋“ค๊ธฐ (์ž๋ฐ” - ์œ„์ƒ์ •๋ ฌ , ์ธ์ ‘๋ฆฌ์ŠคํŠธ , ์ธ์ ‘ ํ–‰๋ ฌ ํ’€์ด ๋ฐ ์˜ค๋ฅ˜ 8๋ฒˆ, 11๋ฒˆ, 17๋ฒˆ ์˜ค๋‹ต๋…ธํŠธ  (1) 2023.11.07
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - 72410 : ์‹ ๊ทœ ์•„์ด๋”” ์ถ”์ฒœ - ์ž๋ฐ” ํ’€์ด ๋ฐ ์˜ค๋‹ต๋…ธํŠธ(ํ…Œ์ผ€ 2 , 22 , 23 , 15 , 20 , 21 , 25)  (2) 2023.10.04
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - 133502 : ํ–„๋ฒ„๊ฑฐ ๋งŒ๋“ค๊ธฐ (์‹œ๊ฐ„ ์ดˆ๊ณผ , String ์˜ replace, + ์—ฐ์‚ฐ์— ๋Œ€ํ•œ ๊ณ ์ฐฐ) ํ’€์ด ๋ฐ ๋ฆฌ๋งˆ์ธ๋”ฉ  (0) 2023.09.27
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - (JAVA) - 64061 : ํฌ๋ ˆ์ธ ์ธํ˜•๋ฝ‘๊ธฐ ๊ฒŒ์ž„ (2019 ์นด์นด์˜ค ๊ฐœ๋ฐœ์ž ๊ฒจ์šธ ์ธํ„ด์‹ญ) ์˜ค๋‹ต๋…ธํŠธ ๋ฐ ํ’€์ด  (0) 2023.09.21

๋Œ“๊ธ€