[programmers] ํƒ€๊ฒŸ ๋„˜๋ฒ„- Java

'ํƒ€๊ฒŸ ๋„˜๋ฒ„' ๋ฌธ์ œ๋Š” ์ฃผ์–ด์ง„ ์ˆซ์ž ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜์—ฌ ๋”ํ•˜๊ฑฐ๋‚˜ ๋นผ์„œ ํƒ€๊ฒŸ ๋„˜๋ฒ„๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•˜๋ฉฐ, ๊ฐ ์ธ๋ฑ์Šค์—์„œ ์ˆซ์ž๋ฅผ ๋”ํ•˜๊ฑฐ๋‚˜ ๋บ€ ๊ฐ’์„ ์žฌ๊ท€ํ˜ธ์ถœ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์—ด์˜ ๋์— ๋„๋‹ฌํ•˜๋ฉด, ๋งŒ๋“ค์–ด์ง„ ํ•ฉ๊ณ„๊ฐ€ ํƒ€๊ฒŸ ๋„˜๋ฒ„์™€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ๊ทธ๋ ‡๋‹ค๋ฉด 1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋”ํ•˜์—ฌ ์ตœ์ข…์ ์œผ๋กœ ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
DriedPollack's avatar
Apr 01, 2024
[programmers] ํƒ€๊ฒŸ ๋„˜๋ฒ„- Java

ํƒ€๊ฒŸ ๋„˜๋ฒ„

๋ฌธ์ œ ์„ค๋ช…

n๊ฐœ์˜ ์Œ์ด ์•„๋‹Œ ์ •์ˆ˜๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ •์ˆ˜๋“ค์„ ์ˆœ์„œ๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š๊ณ  ์ ์ ˆํžˆ ๋”ํ•˜๊ฑฐ๋‚˜ ๋นผ์„œ ํƒ€๊ฒŸ ๋„˜๋ฒ„๋ฅผ ๋งŒ๋“ค๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด [1, 1, 1, 1, 1]๋กœ ์ˆซ์ž 3์„ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ ๋‹ค์„ฏ ๋ฐฉ๋ฒ•์„ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • 1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3
์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ˆซ์ž๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด numbers, ํƒ€๊ฒŸ ๋„˜๋ฒ„ target์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ ์ˆซ์ž๋ฅผ ์ ์ ˆํžˆ ๋”ํ•˜๊ณ  ๋นผ์„œ ํƒ€๊ฒŸ ๋„˜๋ฒ„๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ

  • ์ฃผ์–ด์ง€๋Š” ์ˆซ์ž์˜ ๊ฐœ์ˆ˜๋Š” 2๊ฐœ ์ด์ƒ 20๊ฐœ ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • ๊ฐ ์ˆซ์ž๋Š” 1 ์ด์ƒ 50 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • ํƒ€๊ฒŸ ๋„˜๋ฒ„๋Š” 1 ์ด์ƒ 1000 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

numbers
target
return
[1, 1, 1, 1, 1]
3
5
[4, 1, 2, 1]
4
2

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1
๋ฌธ์ œ ์˜ˆ์‹œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์ž…์ถœ๋ ฅ ์˜ˆ #2
+4+1-2+1 = 4 +4-1+2-1 = 4
  • ์ด 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์œผ๋ฏ€๋กœ, 2๋ฅผ return ํ•ฉ๋‹ˆ๋‹ค.

solution.java

class Solution { public int solution(int[] numbers, int target) { return findWaysHelper(numbers, target, 0, 0); } private int findWaysHelper(int[] numbers, int target, int index, int sum) { if (index == numbers.length) { return sum == target ? 1 : 0; } int waysWithAddition = findWaysHelper(numbers, target, index + 1, sum + numbers[index]); int waysWithSubtraction = findWaysHelper(numbers, target, index + 1, sum - numbers[index]); return waysWithAddition + waysWithSubtraction; } }
 

ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ

  • ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค.
  • ์ธ๋ฑ์Šค๋ฅผ 1์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๊ณ , sum์˜ ๊ฐ’์— ๊ทธ ๋‹ค์Œ ์ธ๋ฑ์Šค์˜ ๊ฐ’์„ ๋”ํ•œ ๊ฐ’์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ์žฌ๊ท€ํ˜ธ์ถœํ•˜๊ณ , sum์˜ ๊ฐ’์— ๊ทธ ๋‹ค์Œ ์ธ๋ฑ์Šค์˜ ๊ฐ’์„ ๋บ€ ๊ฐ’์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ์žฌ๊ท€ํ˜ธ์ถœํ•œ๋‹ค.
  • ์ธ๋ฑ์Šค๊ฐ€ ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์˜ ๋๊นŒ์ง€ ๋„๋‹ฌํ•  ๊ฒฝ์šฐ, ํƒ€๊ฒŸ ๋„˜๋ฒ„๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค๋ฉด 1์„ ๋ฆฌํ„ดํ•œ๋‹ค.
  • ์ฒ˜์Œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ๊ณณ์œผ๋กœ ๋Œ์•„์˜ค๋ฉด ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋”ํ•ด์„œ ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
 

๊ฒฐ๋ก !

ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์งœ๋Š” ์—ฐ์Šต์„ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.
 
Share article

More articles

See more posts

[์Šคํ”„๋ง ๋ถ€ํŠธ ์‡ผํ•‘๋ชฐ ํ”„๋กœ์ ํŠธ with JPA] 3์žฅ ์ •๋ฆฌ

DriedPollack's avatar
April 1, 2024
[์Šคํ”„๋ง ๋ถ€ํŠธ ์‡ผํ•‘๋ชฐ ํ”„๋กœ์ ํŠธ with JPA] 3์žฅ ์ •๋ฆฌ

๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ปDriedPollack's Blog