๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿš€ Algorithm

(29)
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํ”ผ์ž ๋‚˜๋ˆ  ๋จน๊ธฐ (1) (JAVA) ๐Ÿ’ก ๋ฌธ์ œ (๋จธ์“ฑ์ด๋„ค ํ”ผ์ž๊ฐ€๊ฒŒ๋Š” ํ”ผ์ž๋ฅผ ์ผ๊ณฑ ์กฐ๊ฐ์œผ๋กœ ์ž˜๋ผ ์ค๋‹ˆ๋‹ค. ํ”ผ์ž๋ฅผ ๋‚˜๋ˆ ๋จน์„ ์‚ฌ๋žŒ์˜ ์ˆ˜ n์ด ์ฃผ์–ด์งˆ ๋•Œ, ๋ชจ๋“  ์‚ฌ๋žŒ์ด ํ”ผ์ž๋ฅผ ํ•œ ์กฐ๊ฐ ์ด์ƒ ๋จน๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ํ”ผ์ž์˜ ์ˆ˜๋ฅผ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด๋ณด์„ธ์š”. ์š”๊ตฌ์‚ฌํ•ญ: ์ฃผ์–ด์ง„ ๋ฌธ์ œ์—์„œ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ํ•œ ์กฐ๊ฐ ์ด์ƒ ๋จน์–ด์•ผ ํ•œ๋‹ค๊ณ  ๋ช…์‹œ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋ชจ๋“  ์‚ฌ๋žŒ์ด ๋จน๋Š” ์กฐ๊ฐ์˜ ์ˆ˜๋Š” ์ ์–ด๋„ n์กฐ๊ฐ ์ด์ƒ์ด์–ด์•ผ ํ•œ๋‹ค. (n - 1) / 7 ์„ ํ†ตํ•ด ํ”ผ์ž ์กฐ๊ฐ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ , +1 ์„ ํ†ตํ•ด ์˜ฌ๋ฆผ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์ด์œ ๋Š” n ์กฐ๊ฐ ์ด์ƒ์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋งŒ์•ฝ n=7 ์ด๋ผ๋ฉด, (7-1)/7 + 1 = 1 ์ด ๋˜์–ด์•ผ ํ•œ๋‹ค. ์ฆ‰, 1๊ฐœ์˜ ํ”ผ์ž๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๋‹ค๋ฅธ ์˜ˆ๋กœ, n=10 ์ด๋ผ๋ฉด, (10-1)/7 + 1 = 2 ์ด ๋˜์–ด์•ผ ํ•œ๋‹ค. ์ฆ‰, 2..
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋ฐฐ์—ด ์ž๋ฅด๊ธฐ (JAVA) ๐Ÿ’ก ๋ฌธ์ œ ์ •์ˆ˜ ๋ฐฐ์—ด numbers์™€ ์ •์ˆ˜ num1, num2๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, numbers์˜ num1๋ฒˆ ์งธ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ num2๋ฒˆ์งธ ์ธ๋ฑ์Šค๊นŒ์ง€ ์ž๋ฅธ ์ •์ˆ˜ ๋ฐฐ์—ด์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด๋ณด์„ธ์š”. ํ’€์ด: Arrays.stream(numbers, num1, num2 + 1) : numbers ๋ฐฐ์—ด์˜ num1๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ num2๋ฒˆ์งธ ์ธ๋ฑ์Šค๊นŒ์ง€์˜ ์š”์†Œ๋“ค์„ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ฐ˜ํ™˜ .toArray() : ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•ด ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜ num2 + 1์„ ํ•˜๋Š” ์ด์œ ? Arrays.stream(numbers, num1, num2 + 1)์—์„œ num2๋Š” ์ž๋ฅด๊ณ ์ž ํ•˜๋Š” ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ํ•˜์ง€๋งŒ Arrays.stream(numbers, num1, num2)๋Š” ์ธ๋ฑ์Šค 1๋ถ€ํ„ฐ 2..
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ง์ˆ˜๋Š” ์‹ซ์–ด์š” (JAVA) ๐Ÿ’ก ๋ฌธ์ œ ์ •์ˆ˜ n์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, n ์ดํ•˜์˜ ํ™€์ˆ˜๊ฐ€ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋‹ด๊ธด ๋ฐฐ์—ด์„ returnํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”. ์„ค๋ช…: IntStream์„ ์ด์šฉํ•˜์—ฌ 1๋ถ€ํ„ฐ n๊นŒ์ง€์˜ ์ •์ˆ˜ ์ŠคํŠธ๋ฆผ ์ƒ์„ฑ filter ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ํ™€์ˆ˜๋งŒ ๊ฑธ๋Ÿฌ๋ƒ„ toArray ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ int ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ ๐Ÿ– ๋‚ด ๋‹ต์•ˆ import java.util.stream.IntStream; class Main{ public static int[] solution1(int n) { return IntStream.rangeClosed(1, n) .filter(i -> i % 2 == 1) .toArray(); } }
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ตœ๋นˆ๊ฐ’ ๊ตฌํ•˜๊ธฐ (JAVA) ๐Ÿ’ก ๋ฌธ์ œ ์ตœ๋นˆ๊ฐ’์€ ์ฃผ์–ด์ง„ ๊ฐ’ ์ค‘์—์„œ ๊ฐ€์žฅ ์ž์ฃผ ๋‚˜์˜ค๋Š” ๊ฐ’์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ •์ˆ˜ ๋ฐฐ์—ด array๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ตœ๋นˆ๊ฐ’์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด๋ณด์„ธ์š”. ์ตœ๋นˆ๊ฐ’์ด ์—ฌ๋Ÿฌ ๊ฐœ๋ฉด -1์„ return ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ๋œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ : 1. ์ž…๋ ฅ๋œ ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉฐ ๊ฐ ์›์†Œ์˜ ๋“ฑ์žฅ ํšŸ์ˆ˜(๋นˆ๋„์ˆ˜)๋ฅผ Map์— ์ €์žฅํ•œ๋‹ค. 2. Map์—์„œ ์ตœ๋นˆ๊ฐ’์„ ์ฐพ์•„์„œ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ด๋•Œ, ์ตœ๋นˆ๊ฐ’์ด ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๊ฒฝ์šฐ์—๋Š” -1์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์นด์šดํŠธ๋ฅผ ์œ„ํ•ด ์ตœ๋นˆ๊ฐ’์„ ์ฐพ์„ ๋•Œ๋Š” ๊ฐ key-value ์Œ์„ ์ˆœํšŒํ•˜๋ฉด์„œ ๊ฐ€์žฅ ๋งŽ์ด ๋“ฑ์žฅํ•œ ๊ฐ’์„ ์ฐพ๋Š”๋‹ค. ๊ฐ ์›์†Œ๋ฅผ ํ‚ค(key)๋กœ, ๋“ฑ์žฅ ํšŸ์ˆ˜๋ฅผ ๊ฐ’(Value)๋กœ ์ €์žฅํ•˜์—ฌ, ์ˆœํšŒ๊ฐ€ ๋๋‚œ ํ›„ ๊ฐ€์žฅ ๋งŽ์ด ๋“ฑ์žฅํ•œ ์›์†Œ๋ฅผ ์ฐพ์•„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n) - ์ž…๋ ฅ ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ n์ด๋ผ๊ณ ..
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ค‘์•™๊ฐ’ ๊ตฌํ•˜๊ธฐ (JAVA) ๐Ÿ’ก ๋ฌธ์ œ ์ค‘์•™๊ฐ’์€ ์–ด๋–ค ์ฃผ์–ด์ง„ ๊ฐ’๋“ค์„ ํฌ๊ธฐ์˜ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌํ–ˆ์„ ๋•Œ ๊ฐ€์žฅ ์ค‘์•™์— ์œ„์น˜ํ•˜๋Š” ๊ฐ’์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 1, 2, 7, 10, 11์˜ ์ค‘์•™๊ฐ’์€ 7์ž…๋‹ˆ๋‹ค. ์ •์ˆ˜ ๋ฐฐ์—ด array๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ค‘์•™๊ฐ’์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด๋ณด์„ธ์š”. ์•Œ๊ณ ๋ฆฌ์ฆ˜: Quick Sort ํ€ต ์ •๋ ฌ ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n log n) ๐Ÿ– ๋‚ด ๋‹ต์•ˆ class Solution { public int solution1(int[] array) { Arrays.sort(array); // ์ •๋ ฌ int median = array.length / 2; int answer = array[median]; // ์ค‘์•™๊ฐ’ ๋ฐ˜ํ™˜ return answer; } public int solution2(int[] ar..
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋ถ„์ˆ˜์˜ ๋ง์…ˆ (JAVA) ๐Ÿ’ก ๋ฌธ์ œ ์ฒซ ๋ฒˆ์งธ ๋ถ„์ˆ˜์˜ ๋ถ„์ž์™€ ๋ถ„๋ชจ๋ฅผ ๋œปํ•˜๋Š” numer1, denom1, ๋‘ ๋ฒˆ์งธ ๋ถ„์ˆ˜์˜ ๋ถ„์ž์™€ ๋ถ„๋ชจ๋ฅผ ๋œปํ•˜๋Š” numer2, denom2๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ๋‘ ๋ถ„์ˆ˜๋ฅผ ๋”ํ•œ ๊ฐ’์„ ๊ธฐ์•ฝ ๋ถ„์ˆ˜๋กœ ๋‚˜ํƒ€๋ƒˆ์„ ๋•Œ ๋ถ„์ž์™€ ๋ถ„๋ชจ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ๋‹ด์€ ๋ฐฐ์—ด์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด๋ณด์„ธ์š”. ๋ฌธ์ œ ์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„: ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ๋‘ ๋ถ„์ˆ˜์˜ ๋ถ„์ž์™€ ๋ถ„๋ชจ๋ฅผ ๋”ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๊ตฌํ•œ๋‹ค. ๊ตฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ์•ฝ ๋ถ„์ˆ˜๋กœ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๊ธฐ์•ฝ ๋ถ„์ˆ˜๋กœ ๋‚˜ํƒ€๋‚ธ ๊ฒฐ๊ณผ์˜ ๋ถ„์ž์™€ ๋ถ„๋ชจ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์—ด์— ๋‹ด์•„ return ํ•œ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•: ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ๋‘ ๋ถ„์ˆ˜์˜ ๋ถ„๋ชจ(denominator)์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜(lcm)๋ฅผ ๊ตฌํ•œ๋‹ค. ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜(lcm)๋กœ ๊ฐ ๋ถ„์ˆ˜์˜ ๋ถ„์ž(numerator)๋ฅผ ๊ณฑํ•œ ๋’ค, ๋”ํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ถ„์ž๋ฅผ ๊ตฌํ•œ๋‹ค. ์ƒˆ๋กœ์šด..
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋ฐฐ์—ด ์›์†Œ์˜ ๊ธธ์ด ๐Ÿ’ก ๋ฌธ์ œ ๋ฌธ์ž์—ด ๋ฐฐ์—ด strlist๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. strlist ๊ฐ ์›์†Œ์˜ ๊ธธ์ด๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด์„ retrunํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”. ๋ฌธ์ œ ์š”๊ตฌ์‚ฌํ•ญ: ๋ฌธ์ž์—ด๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ๊ตฌํ•˜์—ฌ, ์ƒˆ๋กœ์šด ๋ฆฌ์ŠคํŠธ์— ๋‹ด์•„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•: ๊ฐ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ len() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ๋ฌธ์ž์—ด๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ์ˆœํšŒํ•˜๋ฉด์„œ ๊ฐ ์›์†Œ์˜ ๊ธธ์ด๋ฅผ ๊ตฌํ•˜๊ณ , ๊ทธ ๊ฐ’์„ ์ƒˆ๋กœ์šด ๋ฆฌ์ŠคํŠธ์— ๋‹ด์•„์„œ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋œ๋‹ค. ๐Ÿ– ๋‚ด ๋‹ต์•ˆ public int[] solution(String[] strlist) { // String ๋ฐฐ์—ด์„ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›๊ณ , int ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ // ์ž…๋ ฅ๊ฐ’์œผ๋กœ null์ด๋‚˜ ๋นˆ ๋ฐฐ์—ด์ด ๋“ค์–ด์˜ฌ ๋•Œ, solution ๋ฉ”์„œ๋“œ๊ฐ€ ์˜ˆ์™ธ๋ฅผ ..
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] Lv.0 ์ง์ˆ˜์˜ ํ•ฉ (Java) ๐Ÿ’ก ๋ฌธ์ œ ์ง์ˆ˜์˜ ํ•ฉ ๊ตฌํ•˜๊ธฐ ๐Ÿ– ๋‚ด ๋‹ต์•ˆ class Solution { public int solution(int n) { int answer = 0; for(int i=2; i