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

๋ฐ˜์‘ํ˜•

Algorithm

(19)
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Lv3] ์—ฐ์† ํŽ„์Šค ๋ถ€๋ถ„ ์ˆ˜์—ด์˜ ํ•ฉ - Swift https://school.programmers.co.kr/learn/courses/30/lessons/161988 ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”. programmers.co.kr ๋Œ€ํ‘œ์ ์ธ DP์œ ํ˜• ๋ฌธ์ œ์ธ๋ฐ, Swift ํ’€์ด๊ฐ€ ๋งŽ์ด ์—†๊ธธ๋ž˜ ์—…๋กœ๋“œ ํ•ฉ๋‹ˆ๋‹ค ! ์ฒ˜์Œ์— dp ๋ฐฐ์—ด์„ 2๊ฐœ ๋งŒ๋“œ๋Š” ์•„์ด๋””์–ด๋ฅผ ๋– ์˜ฌ๋ฆฌ์ง€ ๋ชปํ•ด์„œ ์นœ๊ตฌ์˜ ๋„์›€์„ ๋ฐ›์•„ ํ’€์—ˆ๋‹ค ! ์ƒค๋ผ์›ƒ janechoi.. ๋‹ค์Œ์— ๋น„์Šทํ•œ ๋ฌธ์ œ ๋‚˜์˜ค๋ฉด dp ๋ฐฐ์—ด์„ 2๊ฐœ๋กœ ๋‚˜๋ˆ ์„œ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ™œ์šฉํ•ด์•ผ๊ฒ ๋‹ค :) func solution(_ sequence:[Int]) -> Int64 { // -1๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฐ์—ด var dp1..
Backtracking ๋ฐฑํŠธ๋ž˜ํ‚น ๋Œ€ํ‘œ ๋ฌธ์ œ ) NQueen - Swift๋กœ ๊ตฌํ˜„ NQueen ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š”๋ฐ Swift ํ’€์ด๊ฐ€ ๋งŽ์ด ์—†์–ด์„œ ์˜ฌ๋ ค๋ด…๋‹ˆ๋‹ค. Backtracking ์ด๋ž€?๐Ÿ”ฅ ํ•ด๋ฅผ ์ฐพ๋Š” ๋„์ค‘ ํ•ด๊ฐ€ ์•„๋‹ˆ์–ด์„œ ๋ง‰ํžˆ๋ฉด, ๋˜๋Œ์•„๊ฐ€์„œ ๋‹ค์‹œ ํ•ด๋ฅผ ์ฐพ์•„๊ฐ€๋Š” ๊ธฐ๋ฒ•์„ ๋งํ•ฉ๋‹ˆ๋‹ค. → ์ฆ‰, DFS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งŒ์•ฝ ์กฐ๊ฑด์— ๋งž์ง€ ์•Š์œผ๋ฉด ๊ทธ ์ฆ‰์‹œ ์ค‘๋‹จํ•˜๊ณ  ์ด์ „์œผ๋กœ ๋Œ์•„๊ฐ€ ๋‹ค์‹œ ํ™•์ธํ•˜๋Š” ๊ฒƒ์„ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ ์›ํ•˜๋Š” ์กฐ๊ฑด์„ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž…๋‹ˆ๋‹ค. ์ •๋ฆฌํ•˜์ž๋ฉด, ๋ฐฑํŠธ๋ž˜ํ‚น์€ ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ์˜ ์ˆ˜ ์ค‘์—์„œ ํŠน์ •ํ•œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ฒฝ์šฐ๋งŒ ์‚ดํŽด๋ณด๋Š” ๊ฒƒ ๐Ÿ”ฅ ์ฃผ๋กœ ๋ฌธ์ œ ํ’€์ด์—์„œ๋Š” DFS ๋“ฑ์œผ๋กœ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๊ณผ์ •์—์„œ, ์กฐ๊ฑด๋ฌธ ๋“ฑ์„ ๊ฑธ์–ด ๋‹ต์ด ์ ˆ๋Œ€๋กœ ๋  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์„ ์ •์˜ํ•˜๊ณ , ๊ทธ๋Ÿฌํ•œ ์ƒํ™ฉ์ผ ๊ฒฝ์šฐ์—๋Š” ํƒ์ƒ‰์„ ์ค‘์ง€์‹œํ‚จ ๋’ค ๊ทธ ์ด์ „์œผ๋กœ ๋Œ์•„๊ฐ€์„œ ๋‹ค์‹œ ๋‹ค๋ฅธ ๊ฒฝ์šฐ๋ฅผ ํƒ์ƒ‰ํ•˜๊ฒŒ๋” ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. N-Queen ๋ฌธ์ œ ..
Algorithm) Dynamic Programming ๋ฌธ์ œ 1. 1๋กœ ๋งŒ๋“ค๊ธฐ ์ •์ˆ˜ X๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ ์ •์ˆ˜X์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ฐ์‚ฐ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด 4๊ฐ€์ง€ ์ด๋‹ค. 1) X๊ฐ€ 5๋กœ ๋‚˜๋ˆ„์–ด๋–จ์–ด์ง€๋ฉด, 5๋กœ ๋‚˜๋ˆˆ๋‹ค. 2) X๊ฐ€ 3์œผ๋กœ ๋‚˜๋ˆ„์–ด๋–จ์–ด์ง€๋ฉด, 3์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค. 3) X๊ฐ€ 2๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋ฉด, 2๋กœ ๋‚˜๋ˆˆ๋‹ค. 4) X์—์„œ 1์„ ๋บ€๋‹ค. ์ •์ˆ˜ X๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์—ฐ์‚ฐ 4๊ฐœ๋ฅผ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•ด์„œ 1์„ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค. ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜๋Š” ํšŸ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•˜์„ธ์š” ๋ฌธ์ œํ’€์ด ๋‹ต์•ˆ x = int(input()) # DP ํ…Œ์ด๋ธ” ์ดˆ๊ธฐํ™” d = [0] * 30001 # ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ง„ํ–‰ - ๋ณดํ…€์—… for i in range(2, x+1): # ํ˜„์žฌ์˜ ์ˆ˜์—์„œ 1์„ ๋นผ๋Š” ๊ฒฝ์šฐ d[i] = d[i-1] + 1 # ํ˜„์žฌ์˜ ์ˆ˜๊ฐ€ 2๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ๊ฒฝ์šฐ if i % 2 == 0: d[i] =..
SQL) ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค SQL ๊ณ ๋“์  Kit - JOIN ANIMAL_INS ANIMAL_OUTS 1. ์—†์–ด์ง„ ๊ธฐ๋ก ์ฐพ๊ธฐ ์ฒœ์žฌ์ง€๋ณ€์œผ๋กœ ์ธํ•ด ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์‹ค๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ž…์–‘์„ ๊ฐ„ ๊ธฐ๋ก์€ ์žˆ๋Š”๋ฐ, ๋ณดํ˜ธ์†Œ์— ๋“ค์–ด์˜จ ๊ธฐ๋ก์ด ์—†๋Š” ๋™๋ฌผ์˜ ID์™€ ์ด๋ฆ„์„ ID ์ˆœ์œผ๋กœ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. SELECT OUTS.ANIMAL_ID, OUTS.NAME FROM ANIMAL_OUTS OUTS LEFT OUTER JOIN ANIMAL_INS INS ON OUTS.ANIMAL_ID = INS.ANIMAL_ID WHERE INS.ANIMAL_ID is NULL ORDER BY OUTS.ANIMAL_ID LEFT JOIN : ์™ผ์ชฝ ํ…Œ์ด๋ธ”์„ ์ค‘์‹ฌ์œผ๋กœ ์˜ค๋ฅธ์ชฝ์˜ ํ…Œ์ด๋ธ”์„ ๋งค์น˜์‹œํ‚จ๋‹ค. ์™ผ์ชฝ ํ…Œ์ด๋ธ”์˜ ํ•œ๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ์˜ค๋ฅธ์ชฝ ํ…Œ์ด๋ธ” ๋ ˆ์ฝ”๋“œ๊ฐ€ ์ผ์น˜ํ•  ๊ฒฝ์šฐ, ํ•ด๋‹น ์™ผ์ชฝ ๋ ˆ์ฝ”๋“œ..
SQL) ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค SQL ๊ณ ๋“์  Kit - IS NULL 1.์ด๋ฆ„์ด ์—†๋Š” ๋™๋ฌผ์˜ ์•„์ด๋”” ๋™๋ฌผ ๋ณดํ˜ธ์†Œ์— ๋“ค์–ด์˜จ ๋™๋ฌผ ์ค‘, ์ด๋ฆ„์ด ์—†๋Š” ์ฑ„๋กœ ๋“ค์–ด์˜จ ๋™๋ฌผ์˜ ID๋ฅผ ์กฐํšŒํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ๋‹จ, ID๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NULL ORDER BY ANIMAL_ID 2. ์ด๋ฆ„์ด ์žˆ๋Š” ๋™๋ฌผ์˜ ์•„์ด๋”” ๋™๋ฌผ ๋ณดํ˜ธ์†Œ์— ๋“ค์–ด์˜จ ๋™๋ฌผ ์ค‘, ์ด๋ฆ„์ด ์žˆ๋Š” ๋™๋ฌผ์˜ ID๋ฅผ ์กฐํšŒํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ๋‹จ, ID๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NOT NULL ORDER BY ANIMAL_ID 3. NULL ์ฒ˜๋ฆฌํ•˜๊ธฐ ์ž…์–‘ ๊ฒŒ์‹œํŒ์— ๋™๋ฌผ ์ •๋ณด๋ฅผ ๊ฒŒ์‹œํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๋™๋ฌผ์˜ ์ƒ๋ฌผ ์ข…, ์ด๋ฆ„, ์„ฑ๋ณ„ ๋ฐ ์ค‘..
SQL) ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค SQL ๊ณ ๋“์  kit - GROUP BY 1. ๊ณ ์–‘์ด์™€ ๊ฐœ๋Š” ๋ช‡๋งˆ๋ฆฌ ์žˆ์„๊นŒ ๋™๋ฌผ ๋ณดํ˜ธ์†Œ์— ๋“ค์–ด์˜จ ๋™๋ฌผ ์ค‘ ๊ณ ์–‘์ด์™€ ๊ฐœ๊ฐ€ ๊ฐ๊ฐ ๋ช‡ ๋งˆ๋ฆฌ์ธ์ง€ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ด๋•Œ ๊ณ ์–‘์ด๋ฅผ ๊ฐœ๋ณด๋‹ค ๋จผ์ € ์กฐํšŒํ•ด์ฃผ์„ธ์š”. SELECT ANIMAL_TYPE , COUNT(ANIMAL_TYPE) FROM ANIMAL_INS GROUP BY ANIMAL_TYPE ORDER BY ANIMAL_TYPE 2. ๋™๋ช… ๋™๋ฌผ ์ˆ˜ ์ฐพ๊ธฐ ๋™๋ฌผ ๋ณดํ˜ธ์†Œ์— ๋“ค์–ด์˜จ ๋™๋ฌผ ์ด๋ฆ„ ์ค‘ ๋‘ ๋ฒˆ ์ด์ƒ ์“ฐ์ธ ์ด๋ฆ„๊ณผ ํ•ด๋‹น ์ด๋ฆ„์ด ์“ฐ์ธ ํšŸ์ˆ˜๋ฅผ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ด๋•Œ ๊ฒฐ๊ณผ๋Š” ์ด๋ฆ„์ด ์—†๋Š” ๋™๋ฌผ์€ ์ง‘๊ณ„์—์„œ ์ œ์™ธํ•˜๋ฉฐ, ๊ฒฐ๊ณผ๋Š” ์ด๋ฆ„ ์ˆœ์œผ๋กœ ์กฐํšŒํ•ด์ฃผ์„ธ์š”. - ์ด๋ฆ„์ด ์—†๋Š” ๋™๋ฌผ ์ œ์™ธ, ์ด๋ฆ„๋ณ„๋กœ ๊ทธ๋ฃน ๋ฌถ์–ด์ฃผ๊ณ , HAVING ์ ˆ์—์„œ 2๋ฒˆ ์ด์ƒ ์“ฐ์ธ๊ฑฐ ๊ฑธ๋Ÿฌ์ฃผ๊ธฐ. SELECT NAME, COUNT..
SQL) ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค SQL ๊ณ ๋“์  Kit - SUM, MIN, MAX 1. ์ตœ๋Œ“๊ฐ’ ๊ตฌํ•˜๊ธฐ ๊ฐ€์žฅ ์ตœ๊ทผ์— ๋“ค์–ด์˜จ ๋™๋ฌผ์€ ์–ธ์ œ ๋“ค์–ด์™”๋Š”์ง€ ์กฐํšŒํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. => ๊ฐ€์žฅ ์ตœ๊ทผ์— ๋“ค์–ด์™”์„ ๊ฒฝ์šฐ, Datetime์ด ์ œ์ผ ํผ SELECT MAX(DATETIME) FROM ANIMAL_INS LIMIT 1; 2. ์ตœ์†Ÿ๊ฐ’ ๊ตฌํ•˜๊ธฐ ๋™๋ฌผ ๋ณดํ˜ธ์†Œ์— ๊ฐ€์žฅ ๋จผ์ € ๋“ค์–ด์˜จ ๋™๋ฌผ์€ ์–ธ์ œ ๋“ค์–ด์™”๋Š”์ง€ ์กฐํšŒํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. SELECT MIN(DATETIME) FROM ANIMAL_INS LIMIT 1; 3. ๋™๋ฌผ ์ˆ˜ ๊ตฌํ•˜๊ธฐ ๋™๋ฌผ ๋ณดํ˜ธ์†Œ์— ๋™๋ฌผ์ด ๋ช‡ ๋งˆ๋ฆฌ ๋“ค์–ด์™”๋Š”์ง€ ์กฐํšŒํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. SELECT COUNT(*) FROM ANIMAL_INS 4. ์ค‘๋ณต ์ œ๊ฑฐํ•˜๊ธฐ ๋™๋ฌผ ๋ณดํ˜ธ์†Œ์— ๋“ค์–ด์˜จ ๋™๋ฌผ์˜ ์ด๋ฆ„์€ ๋ช‡ ๊ฐœ์ธ์ง€ ์กฐํšŒํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ด๋•Œ ์ด๋ฆ„์ด NULL..
SQL) ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค SQL ๊ณ ๋“์  Kit - Select ์ตœ๊ทผ์— ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋ณด๋Ÿฌ๊ฐ”๋Š”๋”” SQL ๋ฌธ์ œ๋„ 1๋ฌธ์ œ ๋‚˜์™€์„œ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๊ณ ๋“์  KIT ๋ฌธ์ œ๋“ค์„ ํ•œ๋ฒˆ ๋‹ค ํ’€๊ณ  ๊ฐ”๋‹ค. ์ƒ๊ฐ๋ณด๋‹ค ๊ทธ๋ ‡๊ฒŒ ์–ด๋ ค์šด ๋ฌธ์ œ๋Š” ์—†์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค ! ์‹ค์ œ ์ฝ”ํ…Œ์—์„œ๋„ SELECT, WHERE , LIKE, ORDER BY ์จ์„œ ํฌํ•จ๋˜๋Š” ๋ฌธ์ž์—ด๋กœ ์กฐ๊ฑด ๊ฒ€์‚ฌํ•˜๊ณ  ์ •๋ ฌํ•ด์„œ ์กฐํšŒ. ์ •๋„๊ฐ€ ๋์ด์—ˆ๋‹ค ! 1. ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ ์กฐํšŒํ•˜๊ธฐ SELECT * FROM ANIMAL_INS ORDER BY ANIMAL_ID 2. ์—ญ์ˆœ ์ •๋ ฌํ•˜๊ธฐ ๋™๋ฌผ ๋ณดํ˜ธ์†Œ์— ๋“ค์–ด์˜จ ๋ชจ๋“  ๋™๋ฌผ์˜ ์ด๋ฆ„๊ณผ ๋ณดํ˜ธ ์‹œ์ž‘์ผ์„ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ๊ฒฐ๊ณผ๋Š” ANIMAL_ID ์—ญ์ˆœ์œผ๋กœ ๋ณด์—ฌ์ฃผ์„ธ์š”. SELECT NAME, DATETIME FROM ANIMAL_INS ORDER BY ANIMAL_ID DESC 3. ์•„ํ”ˆ ๋™๋ฌผ ์ฐพ๊ธฐ ๋™๋ฌผ ๋ณดํ˜ธ..

๋ฐ˜์‘ํ˜•