-
[Algo Rhythm๐บ๐] ํ๋ก๊ทธ๋๋จธ์ค ๊ณ ๋์ kit ์ ์ธAlgo Rhythm๐บ๐/Programmers 2020. 7. 21. 00:04
๐ ๋ฌธ์ ์ค๋ช
ํ๋์ ์ํ ์ ์ธ์ ์ด์ฉํ์ฌ ๋ฌผ๊ฑด์ ๋ฌด๊ฒ๋ฅผ ์ธก์ ํ๋ ค๊ณ ํฉ๋๋ค. ์ด ์ ์ธ์ ์ํ์ ๋์๋ ๋ฌผ๊ฑด์ด๋ ์ถ๋ฅผ ์ฌ๋ ค๋๋ ์ ์๊ฐ ๋ฌ๋ ค ์๊ณ , ์ํ์ ๊ธธ์ด๋ ๊ฐ์ต๋๋ค. ๋ํ, ์ ์ธ์ ํ์ชฝ์๋ ์ ์ธ์ถ๋ค๋ง ๋์ ์ ์๊ณ , ๋ค๋ฅธ ์ชฝ์๋ ๋ฌด๊ฒ๋ฅผ ์ธก์ ํ๋ ค๋ ๋ฌผ๊ฑด๋ง ์ฌ๋ ค๋์ ์ ์์ต๋๋ค.
์ ์ธ์ถ๊ฐ ๋ด๊ธด ๋ฐฐ์ด weight๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์ด ์ถ๋ค๋ก ์ธก์ ํ ์ ์๋ ์์ ์ ์ ๋ฌด๊ฒ ์ค ์ต์๊ฐ์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์๋ฅผ ๋ค์ด, ๋ฌด๊ฒ๊ฐ ๊ฐ๊ฐ [3, 1, 6, 2, 7, 30, 1]์ธ 7๊ฐ์ ์ ์ธ์ถ๋ฅผ ์ฃผ์ด์ก์ ๋, ์ด ์ถ๋ค๋ก ์ธก์ ํ ์ ์๋ ์์ ์ ์ ๋ฌด๊ฒ ์ค ์ต์๊ฐ์ 21์ ๋๋ค.
์ ํ ์ฌํญ
-
์ ์ธ์ถ์ ๊ฐ์๋ 1๊ฐ ์ด์ 10,000๊ฐ ์ดํ์ ๋๋ค.
-
๊ฐ ์ถ์ ๋ฌด๊ฒ๋ 1 ์ด์ 1,000,000 ์ดํ์ ๋๋ค.
๐ฏ ์ด๋ป๊ฒ ํ์๋
์ฒซ๋ฒ์งธ ํ์ด(์ ํ์ฑ ํต๊ณผ o, ํจ์จ์ฑ ํต๊ณผ x)
import java.util.Arrays; class Solution { public int solution(int[] weight) { int w = 1; Arrays.sort(weight); while(true) { // w๋ฅผ ๋ง๋ค ์ ์์ผ๋ฉด break if(!isPossible(w, weight)) break; w++; } return w; } public boolean isPossible(int w, int[] weight) { boolean isPossible = false; for(int i = weight.length - 1; i >= 0; i--) { if((w - weight[i]) == 0) { isPossible = true; break; } if((w - weight[i]) > 0) w = w - weight[i]; } return isPossible; } }
์ต์ข ์ฝ๋
import java.util.Arrays; class Solution { public int solution(int[] weight) { int answer = 1; Arrays.sort(weight); for(int i = 0; i < weight.length; i++) { if(answer < weight[i]) break; answer = answer + weight[i]; } return answer; } }
๐ง ์ ์ ๋ ๊ฒ ํ์๋
์ฒซ๋ฒ์งธ ํ์ด(์ ํ์ฑ ํต๊ณผ o, ํจ์จ์ฑ ํต๊ณผ x)
์ฒ์์๋ ์ด ๋ฌธ์ ๊ฐ Knapsack์ ํ์ ํธํ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํ๋ค.
๊ทธ๋์ ์ต๋ w ๋ฌด๊ฒ๊น์ง ๋ด์ ์ ์๋ ๋ฐฐ๋ญ์ด ์๋ค๊ณ ๊ฐ์ ํ๊ณ w๋ฅผ 1๋ถํฐ ํ๋์ฉ ์ฆ๊ฐ์์ผ์ ๋ฐฐ๋ญ์ ๋ฌด๊ฒ w๋ฅผ ์ฑ์ธ ์ ์๋๊ฐ๋ฅผ ๋ฐ์ก๋ค. ์ด ๋ ๊ฐ์ฅ ๋ฌด๊ฑฐ์ด ์ฆ, ๊ฐ์ฅ ํฐ ์ซ์๋ถํฐ ์ฐจ๋ก๋ก ๋ฐฐ๋ญ์ ๋ฃ๋๋ก ์ฝ๋๋ฅผ ์์ฑํ๋ค.
์ต์ข ์ฝ๋
์ฒซ๋ฒ์งธ ํ์ด๋ ์ ํํ๋ ๋นํจ์จ์ ์ธ ์ฝ๋์๋ค. ์๋ฌด๋ฆฌ ์๊ฐํด๋ ์๊ณ ๋ฆฌ์ฆ์ด ๋ ์ค๋ฅด์ง ์์ ๋ค๋ฅธ ๋ถ๋ค์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํด์ ์๊ณ ๋ฆฌ์ฆ์ ๊นจ๋ฌ์๋ค. ์ด ์๊ณ ๋ฆฌ์ฆ์ ํต์ฌ์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ ํ ํ์ธ๊ฐ๋ฅํ i๋ฒ์งธ๊น์ง์ ๋์ ํฉ๊ณผ i+1๋ฒ์งธ ์์ ๊ด๊ณ์๋ค. ๋ง์ฝ i+1๋ฒ์งธ ์๊ฐ i๋ฒ์งธ๊น์ง์ ๋์ ํฉ๋ณด๋ค ํฌ๋ค๋ฉด ์ ๋๋ก (i๋ฒ์งธ๊น์ง์ ๋์ ํฉ + 1)์ธ ์๋ฅผ ๋ง๋ค ์ ์๋ค. ๊ทธ ์ฑ์ง์ ์ด์ฉํด์ ์์ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํ๋ค.
๐ ๋ฌด์์ ๋ฐฐ์ ๋
์ด๋ฒ ๋ฌธ์ ๋ ์ํ์ ์ฌ๊ณ ๋ ฅ์ ์๊ตฌํ๋ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํ๋ค. ์ํ์ ์ผ๋ก ์ฌ๊ณ ํ๋ ์ฐ์ต์ ํด์ผ๊ฒ ๋ค.
'Algo Rhythm๐บ๐ > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
-