๐Ÿ’ป Computer Science/Algorithm

์ฝ”๋”ฉ ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ๋ฌธ์ œ ํ’€์ด ์‹ค๋ ฅ์„ ๊ธธ๋Ÿฌ๋ณด์ž ^!^๐Ÿ“Œ ๋ฌธ์ œ ์š”์•ฝ์ •์ˆ˜ n, k๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ๊ธธ์ด n์˜ ์ •์ˆ˜ ๋ฐฐ์—ด A๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.๋ชจ๋“  (1, r)๊ตฌ๊ฐ„(0 ๋ชจ๋“  B[l, r] ๊ฐ’๋“ค์„ ๋ชจ์•„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ๋’ค, k๋ฒˆ์งธ๋กœ ์ž‘์€ ๊ฐ’์„ ์ถœ๋ ฅํ•ด๋ณด์ž.๐Ÿ“Œ ํ’€์ด ์•„์ด๋””์–ดO(n^2)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋กœ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  (l, r)๊ตฌ๊ฐ„์„ ๋งŒ๋“ค์–ด์„œ OR ๊ฐ’์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.๊ฐ ๊ตฌ๊ฐ„๋งˆ๋‹ค OR ๊ณ„์‚ฐํ•˜๊ณ  ๋ฆฌ์ŠคํŠธ์— ์ €์žฅํ•œ๋‹ค.์ •๋ ฌ ํ›„ k๋ฒˆ์งธ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.Java codeimport java.util.*;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nex..
1. ์ตœ๋‹จ ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€?์ตœ๋‹จ ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ทธ๋ž˜ํ”„์—์„œ ํ•œ ์ •์ ์—์„œ ๋‹ค๋ฅธ ์ •์ ๊นŒ์ง€ ๊ฐ€๋Š” ๋ฐ ํ•„์š”ํ•œ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ‘์ตœ๋‹จ’์˜ ์˜๋ฏธ๋Š” ๊ฒฝ๋กœ ์ƒ์˜ ๊ฐ€์ค‘์น˜ ํ•ฉ์ด ๊ฐ€์žฅ ์ž‘๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ง€๋„์—์„œ ๋‘ ๋„์‹œ๋ฅผ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋กœ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๋Š” ๊ฒƒ์ด ์ตœ๋‹จ ๊ฒฝ๋กœ ๋ฌธ์ œ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.๋ฐฉ๊ธˆ ์ œ๊ฐ€ ํ’€๊ณ  ์žˆ๋˜ ์ด ๋ฌธ์ œ: https://www.acmicpc.net/problem/16928 ์—์„œ์˜ '์ •์ '์€ ๊ฒŒ์ž„ํŒ์˜ ์นธ์ด ๋  ๊ฒƒ์ด๋ฉฐ, ๊ฐ ์นธ๋งˆ๋‹ค ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ๊ฒฝ๋กœ๋ฅผ ํ†ตํ•ด ์ด๋™ํ•˜๋Š” ์ƒํ™ฉ์ด ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ์ด ๋ฌธ์ œ์—์„œ๋Š” ๊ฐ ๊ฒฝ๋กœ์˜ ๊ฐ€์ค‘์น˜๊ฐ€ ๋ชจ๋‘ 1๋กœ ๋™์ผํ•œ ์ƒํ™ฉ์ด๋ฉฐ, ์ด ๊ฒฝ์šฐ์—๋Š” ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ํ‘ธ๋Š” ๊ฒŒ ์ ํ•ฉํ•œ์ง€ ๊ธ€์˜ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์— ์–ธ๊ธ‰ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 2. ๋Œ€ํ‘œ์ ์ธ ์ตœ๋‹จ ..
์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ์ค‘์— ๋งค์šฐ ๊น”๋”ํ•œ ์ฝ”๋“œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.์ €๋Š” ์—ด์‹ฌํžˆ ํ€ต์†ŒํŠธ๋กœ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋Š”๋ฐ, ์–ด๋–ค ๋ถ„๋“ค์€ Arrays.sort์™€ lambda ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์•„์ฃผ ๊น”๋”ํ•œ ์ฝ”๋“œ๋กœ ํ’€์ด๋ฅผ ์™„์„ฑํ•œ ๊ฒƒ์ด์—ˆ์ฃ !!! ์ €๋Š” ๊ทธ๋Ÿฐ ์‹์œผ๋กœ ์ฝ”๋”ฉํ•ด๋ณธ ์ ์ด ์—†์–ด์„œ ํ•œ ์ค„์”ฉ ๋œฏ์–ด๋ดค๋Š”๋ฐ,์‚ฌ์‹ค '์ € ์ฝ”๋“œ๊ฐ€ ๋„๋Œ€์ฒด ์™œ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ์„ ํ•˜๋Š” ์ฝ”๋“œ์ธ๊ฑฐ์ง€???' ํ•˜๋Š” ์ƒ๊ฐ์ด ๊ณ„์† ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‹ค์‹œ ์ฐพ์•„๋ณด๋ฉด์„œ ์ดํ•ด๋ฅผ ํ•˜๊ณ  ๋ฉ”๋ชจ๋ฅผ ํ•ด๋‘๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹น ์ •๋ ฌํ•˜๋Š” ๋ถ€๋ถ„๋งŒ ์ž‘์„ฑํ•ด๋‘” ์˜ˆ์‹œ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.// ์˜ˆ์‹œ ์ฝ”๋“œimport java.util.Arrays;public class Main { public static void main(String[] args) { int[] arr1d = new int[]..
์ด์ง„ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์„ ํ˜• ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋‹ฌ๋ฆฌ, ์ •๋ ฌ๋œ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ „์ œ๋กœ ํ•œ๋‹ค. ์ •๋ ฌ๋œ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์•„๋‹ˆ๋ฉด ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด์ง„ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋ฌด์—‡์ธ์ง€๋Š”, ๋‹ค๋ฅธ ์ž๋ฃŒ๋“ค์„ ํ†ตํ•ด ์ด๋ฏธ ์ถฉ๋ถ„ํžˆ ๋งŽ์ด ์„ค๋ช…๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์„ค๋ช…์„ ์ƒ๋žตํ•œ๋‹ค. ์‚ฌ์šฉํ•œ ์–ธ์–ด๋Š” python์ด๊ณ  ์žฌ๊ท€๋ฅผ ์‚ฌ์šฉํ•œ ๋ฐฉ๋ฒ•, if-else๋ฌธ์„ ์‚ฌ์šฉํ•œ ๋ฐฉ๋ฒ• ๋‘ ๊ฐ€์ง€๋ฅผ ๋ชจ๋‘ ์‚ดํŽด๋ณด์ž. ๋ฌธ์ œ๋Š” ์ฐพ๊ณ ์ž ํ•˜๋Š” ์›์†Œ element๊ฐ€ ๋ฆฌ์ŠคํŠธ ์•ˆ์— ์กด์žฌํ•˜๋ฉด ๊ทธ ์›์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฆฌํ„ดํ•˜๊ณ , ์—†์œผ๋ฉด None์„ ๋ฆฌํ„ดํ•˜๋Š” ๊ฒƒ์ด๋‹ค. 1. ์žฌ๊ท€ def binary_search(element, lst): mid = len(lst)//2 if not len(lst): return None elif element == lst[mid]: return mid elif el..
๋…• ์ง€
'๐Ÿ’ป Computer Science/Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก