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

๐Ÿš€ Algorithm/PGS

(17)
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํƒ€๊ฒŸ ๋„˜๋ฒ„(JAVA) ๋ณดํ˜ธ๋˜์–ด ์žˆ๋Š” ๊ธ€์ž…๋‹ˆ๋‹ค.
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ง์ˆ˜ ํ™€์ˆ˜ ๊ฐœ์ˆ˜ ๐Ÿ’ก ๋ฌธ์ œ ์ •์ˆ˜๊ฐ€ ๋‹ด๊ธด ๋ฆฌ์ŠคํŠธ num_list๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, num_list์˜ ์›์†Œ ์ค‘ ์ง์ˆ˜์™€ ํ™€์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด๋ณด์„ธ์š”. ๐Ÿ– ๋‚ด ๋‹ต์•ˆ public int[] solution(int[] num_list) { // ์ง์ˆ˜์˜ ๊ฐœ์ˆ˜ ๊ตฌํ•˜๊ธฐ long even_count = Arrays.stream(num_list) // num_list๋ฅผ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ณ€ํ™˜ .filter(num -> num % 2 == 0) // ์ง์ˆ˜์ธ ์›์†Œ๋งŒ ๊ฑธ๋Ÿฌ๋‚ด๊ธฐ .count(); // ๊ฑธ๋Ÿฌ๋‚ธ ์›์†Œ์˜ ๊ฐœ์ˆ˜ ๊ตฌํ•˜๊ธฐ // ํ™€์ˆ˜์˜ ๊ฐœ์ˆ˜ ๊ตฌํ•˜๊ธฐ long odd_count = num_list.length - even_count; // ์ „์ฒด ๊ธธ์ด์—์„œ ์ง์ˆ˜์˜ ๊ฐœ์ˆ˜ ๋นผ๊ธฐ // ๊ฒฐ๊ณผ ๋ฐฐ์—ด ๋งŒ๋“ค๊ธฐ int[] ..
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋ฐฐ์—ด ๋’ค์ง‘๊ธฐ(JAVA) ๐Ÿ’ก ๋ฌธ์ œ ์ •์ˆ˜๊ฐ€ ๋“ค์–ด ์žˆ๋Š” ๋ฐฐ์—ด num_list๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. num_list์˜ ์›์†Œ์˜ ์ˆœ์„œ๋ฅผ ๊ฑฐ๊พธ๋กœ ๋’ค์ง‘์€ ๋ฐฐ์—ด์„ returnํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”. ์•Œ๊ณ ๋ฆฌ์ฆ˜: . ๐Ÿ– ๋‚ด ๋‹ต์•ˆ import java.util.Arrays; import java.util.stream.IntStream; class Solution { public int[] solution(int[] num_list) { int[] reverse = IntStream.rangeClosed(1, num_list.length) .map(i -> num_list[num_list.length-i]) .toArray(); return reverse; } }
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํ”ผ์ž ๋‚˜๋ˆ ๋จน๊ธฐ (2) (JAVA) ๐Ÿ’ก ๋ฌธ์ œ ๋จธ์“ฑ์ด๋„ค ํ”ผ์ž๊ฐ€๊ฒŒ๋Š” ํ”ผ์ž๋ฅผ ์—ฌ์„ฏ ์กฐ๊ฐ์œผ๋กœ ์ž˜๋ผ ์ค๋‹ˆ๋‹ค. ํ”ผ์ž๋ฅผ ๋‚˜๋ˆ ๋จน์„ ์‚ฌ๋žŒ์˜ ์ˆ˜ n์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, n๋ช…์ด ์ฃผ๋ฌธํ•œ ํ”ผ์ž๋ฅผ ๋‚จ๊ธฐ์ง€ ์•Š๊ณ  ๋ชจ๋‘ ๊ฐ™์€ ์ˆ˜์˜ ํ”ผ์ž ์กฐ๊ฐ์„ ๋จน์–ด์•ผ ํ•œ๋‹ค๋ฉด ์ตœ์†Œ ๋ช‡ ํŒ์„ ์‹œ์ผœ์•ผ ํ•˜๋Š”์ง€๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด๋ณด์„ธ์š”. ์š”๊ตฌ์‚ฌํ•ญ: 6๊ฐœ๋กœ ๋‚˜๋ˆ ์ง„ ์กฐ๊ฐ๋“ค์„ ์ด์šฉํ•˜์—ฌ n๋ช…์ด ๋™์ผํ•œ ์ˆ˜์˜ ์กฐ๊ฐ์„ ๋จน์„ ๋•Œ ํ•„์š”ํ•œ ํ”ผ์ž๊ฐ€ ์ด ๋ช‡ ํŒ์ธ ์ง€ ๊ตฌํ•ด์•ผ ํ•œ๋‹ค. ์ฆ‰, ํ”ผ์ž๋ฅผ ๋ชจ๋‘ ๋˜‘๊ฐ™์€ ์ˆ˜์˜ ์กฐ๊ฐ์œผ๋กœ ๋ถ„ํ• ํ•ด์„œ ๋‚˜๋ˆ ์ค˜์•ผ ํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•: ํ”ผ์ž ์กฐ๊ฐ ์ˆ˜๋ฅผ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š” ์ˆ˜๋ฅผ ์ฐพ์•„์•ผ ํ•œ๋‹ค. 6์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ์ˆ˜๋“ค์€ ๋ชจ๋‘ 6๊ฐœ์˜ ์กฐ๊ฐ์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š” ์ˆ˜๋“ค์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  n๋ช…์ด ๋™์ผํ•œ ์ˆ˜์˜ ์กฐ๊ฐ์„ ๋จน๋Š”๋‹ค๋ฉด, ๋ชจ๋“  ์กฐ๊ฐ์ด ๋‚˜๋ˆ ๋–จ์–ด์ง€๋Š” ์ˆ˜๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค. ๋”ฐ..
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํ”ผ์ž ๋‚˜๋ˆ  ๋จน๊ธฐ (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์ด๋ผ๊ณ ..