Hamutaro - Hamtaro 4

์ „์ฒด ๊ธ€ 118

[CS] ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์„ค๊ณ„ ์›์น™ : SOLID

๋‹จ์ผ ์ฑ…์ž„ ์›์น™ (Single Responsibility Principle) ๋ชจ๋“  ํด๋ž˜์Šค๋Š” ๊ฐ๊ฐ ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ ๊ฐ€์ ธ์•ผ ํ•จ์˜ˆ๋ฅผ ๋“ค์–ด์„œ A๋ผ๋Š” ๋กœ์ง์ด ์žˆ์œผ๋ฉด ์–ด๋–ค ํด๋ž˜์Šค๋Š” A์— ๊ด€ํ•œ ํด๋ž˜์Šค์—ฌ์•ผ ํ•˜๊ณ  ์ด๋ฅผ ์ˆ˜์ •ํ•˜๋”๋ผ๋„ A์™€ ๊ด€๋ จ๋œ ์ˆ˜์ •์ด์–ด์•ผ ํ•จ ๊ฐœ๋ฐฉ-ํ์‡„ ์›์น™ (Open-Closed Principle) ๊ธฐ์กด์˜ ์ฝ”๋“œ๋Š” ์‰ฝ๊ฒŒ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์œผ๋ฉด์„œ ํ™•์žฅ์€ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ ๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™ (Likov Substitution Principle) ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฐ์ฒด๋Š” ์ •ํ™•์„ฑ์„ ๊นจ๋œจ๋ฆฌ์ง€ ์•Š์œผ๋ฉด์„œ ํ•˜์œ„ ํƒ€์ž…์˜ ์ธ์Šคํ„ด์Šค๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ์˜ˆ๋ฅผ ๋“ค์–ด ํด๋ž˜์Šค๊ฐ€ ์ƒ์†์ด ๋˜์–ด์„œ ๋ถ€๋ชจ, ์ž์‹ ๊ณ„์ธต์ด ๋งŒ๋“ค์–ด์ง€๋ฉด ๋ถ€๋ชจ ๊ฐ์ฒด์— ์ž์‹ ๊ฐ์ฒด๋ฅผ ๋„ฃ์–ด๋„ ์‹œ์Šคํ…œ์ด ๋ฌธ์ œ์—†์ด ๋Œ์•„๊ฐ€์•ผ ํ•จ ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™ (Interface Segregati..

CS 2024.11.10

[C++] ์ƒ์„ฑ์ž์™€ ์†Œ๋ฉธ์ž

์ƒ์„ฑ์ž ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ์ˆ˜ํ–‰ํ•  ์ž‘์—…์„ ์ •์˜ํ•˜๋Š” ํŠน์ˆ˜ํ•œ ๋ฉค๋ฒ„ํ•จ์ˆ˜์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งค๊ฐœ๋ณ€์ˆ˜ ์„ ์–ธ ๊ฐ€๋Šฅ์—ฌ๋Ÿฌ๊ฐœ ๋‹ค์ค‘์ •์˜ ๊ฐ€๋Šฅํด๋ž˜์Šค ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ ์–ธ๋ฐ˜ํ™˜์ž๋ฃŒํ˜• ํ‘œ์‹œ X, ๋ฆฌํ„ด X// ์ƒ์„ฑ์ž ์„ ์–ธ ํ˜•์‹class ClassName {...public: ClassName(fParameterList){ ... } ...};   ์†Œ๋ฉธ์ž ๊ฐ์ฒด๊ฐ€ ์†Œ๋ฉธ๋  ๋•Œ ์ˆ˜ํ–‰ํ•  ์ž‘์—…์„ ์ •์˜ํ•˜๋Š” ํŠน์ˆ˜ํ•œ ๋ฉค๋ฒ„ํ•จ์ˆ˜ํด๋ž˜์Šค ์ด๋ฆ„์— ~ ๋ถ™์—ฌ์„œ ์ˆ˜ํ–‰๋ฐ˜ํ™˜์ž๋ฃŒํ˜• ํ‘œ์‹œ X, ๋ฆฌํ„ด X๋งค๊ฐœ๋ณ€์ˆ˜ ์—†์Œ, ํ•˜๋‚˜์˜ ์†Œ๋ฉธ์ž๋งŒ ์ •์˜ ๊ฐ€๋Šฅ// ์ƒ์„ฑ์ž ์„ ์–ธ ํ˜•์‹class ClassName {...public: ClassName(fParameterList){ ... } ~ClassName(){ ... } ..

C++ 2024.11.07

[๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] ์ •๊ทœํ™” ๊ณผ์ •

์ •๊ทœํ™”๋ฐ์ดํ„ฐ ์ด์ƒํ˜„์ƒ์„ ํ•ด๊ฒฐํ•˜๊ฑฐ๋‚˜ ์ €์žฅ ๊ณต๊ฐ„์„ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ฆด๋ ˆ์ด์…˜์„ ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ณผ์ •์ด์ƒํ˜„์ƒ์ด๋ž€?์˜ˆ๋ฅผ ๋“ค์–ด์„œ ํšŒ์›์ด ํ•œ ๊ฐœ์˜ ๋“ฑ๊ธ‰์„ ๊ฐ€์ ธ์•ผ ํ•˜๋Š”๋ฐ ์„ธ ๊ฐœ์˜ ๋“ฑ๊ธ‰์„ ๊ฐ–๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ๋•Œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ™์ด ์‚ญ์ œ๋˜๊ณ ,๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•ด์•ผ ํ•˜๋Š”๋ฐ ํ•˜๋‚˜์˜ ํ•„๋“œ ๊ฐ’์ด NULL์ด ๋˜๋ฉด ์•ˆ๋˜์–ด์„œ ์‚ฝ์ž…ํ•˜๊ธฐ ์–ด๋ ค์šด ํ˜„์ƒ์ œ 1์ •๊ทœํ˜•์ œ 2์ •๊ทœํ˜•์ œ 3์ •๊ทœํ˜•๋ณด์ด์Šค/์ฝ”๋“œ ์ •๊ทœํ˜• (BCNF)์ œ 4์ •๊ทœํ˜•์ œ 5์ •๊ทœํ˜•๊ธฐ๋ณธ ์ •๊ทœํ˜•์€ ์ œ 1,2,3์ •๊ทœํ˜•, BCNF ์ •๊ทœํ˜•.์ œ 1์ •๊ทœํ˜•๋ฆด๋ ˆ์ด์…˜์˜ ๋ชจ๋“  ๋„๋ฉ”์ธ์ด ๋” ์ด์ƒ ๋ถ„ํ•ด๋  ์ˆ˜ ์—†๋Š” ์›์ž๊ฐ’๋งŒ์œผ๋กœ ๊ตฌ์„ฑ๋จ๋ฐ˜๋ณต ์ง‘ํ•ฉ์ด ์žˆ๋‹ค๋ฉด ์ œ๊ฑฐํ•ด์•ผ ํ•จ์ œ 2์ •๊ทœํ˜•๋ฆด๋ ˆ์ด์…˜์ด ์ œ 1์ •๊ทœํ˜•์„ ๋งŒ์กฑํ•˜๊ณ  ๋ถ€๋ถ„ ํ•จ์ˆ˜์˜ ์ข…์†์„ฑ์„ ์ œ๊ฑฐํ•œ ์ƒํƒœ์ œ 3์ •๊ทœํ˜•์ œ 2์ •๊ทœํ˜•์„ ๋งŒ์กฑํ•˜๊ณ  ๊ธฐ๋ณธํ‚ค๊ฐ€ ์•„๋‹Œ ๋ชจ๋“  ์†์„ฑ์ด ์ดํ–‰์  ํ•จ..

DB 2024.11.03

[Bronze II/JAVA] 84753226 ์ƒ์ˆ˜

https://www.acmicpc.net/problem/2908   ๋ฌธ์ž์—ด์„ ๋’ค์ง‘๋Š” reverse() ๋ฅผ ์•Œ๋ฉด ์ข€ ๋” ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋‹ค๋ฅธ ์‚ฌ๋žŒ ํ’€์ด๋ฅผ ๋ณด๋‹ˆ ํ•œ๋ฒˆ์— ๋ฌธ์ž์—ด์„ ์ž…๋ ฅ๋ฐ›์•„ ๊ณต๋ฐฑ๊ธฐ์ค€์œผ๋กœ ๋ถ„๋ฆฌํ•ด์„œ ์ฒ˜๋ฆฌํ–ˆ๋Š”๋ฐ ์ด๊ฒŒ ํ›จ์”ฌ ์ข‹์€ ์ฝ”๋“œ๊ฐ™๋‹ค.๋‚˜๋Š” ๋ณ€์ˆ˜๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ์ž…๋ ฅ๋ฐ›๊ณ  ๊ฐ๊ฐ ๋’ค์ง‘๋Š” ๊ณผ์ •์„ ๊ฑฐ์ณ์„œ ์ฝ”๋“œ๊ฐ€ ์ง€์ €๋ถ„ํ•ด์กŒ๋‹ค.split์œผ๋กœ ๋ถ„๋ฆฌํ•ด์„œ ๋ฐฐ์—ด๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉด ์ตœ๋Œ“๊ฐ’๋„ Maxํ•จ์ˆ˜๋กœ ๊ฐ„๋‹จํžˆ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‚ด ํ’€์ดimport java.util.*;class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); String a = sc.next(); String b = sc..

Algorithm/BOJ 2024.11.02

[Git] Git์— Repository ์ƒ์„ฑํ•˜๊ณ  ํ”„๋กœ์ ํŠธ ์˜ฌ๋ฆฌ๊ธฐ

Git๊นƒ์€ ๋ถ„์‚ฐ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์œผ๋กœ ์†Œ์Šค์ฝ”๋“œ ํ˜•์ƒ๊ด€๋ฆฌ๋ฅผ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.Git์„ ์‚ฌ์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ๋ช…์ด ํ˜‘์—…์ด ์šฉ์ดํ•˜๋ฉฐ ๋ฐ”๋€ ์ฝ”๋“œ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. Git์— ํ”„๋กœ์ ํŠธ ์˜ฌ๋ฆฌ๊ธฐ 1. GitHub์— ์ €์žฅ์†Œ ์ƒ์„ฑ https://github.com/ GitHub · Build and ship software on a single, collaborative platformJoin the world's most widely adopted, AI-powered developer platform where millions of developers, businesses, and the largest open source community build software that advances humanity.git..

Git 2024.10.30

[SpringBoot] VSCODE์—์„œ Spring Boot ํ™˜๊ฒฝ์„ค์ •ํ•˜๊ณ  ํ”„๋กœ์ ํŠธ ์ƒ์„ฑํ•˜๊ธฐ

VSCODE์— ์Šคํ”„๋ง๋ถ€ํŠธ ํ™˜๊ฒฝ์„ค์ • 1. ์Šคํ”„๋ง๋ถ€ํŠธ ์ต์Šคํ…์…˜ ์„ค์น˜ํ•˜๊ธฐ์ต์Šคํ…์…˜์—์„œ Spring Boot Extension Pack์„ ๊ฒ€์ƒ‰ํ•ด์„œ install ํ•œ๋‹ค.   2. Ctrl + Shift + P ๋‹จ์ถ•ํ‚ค๋ฅผ ๋ˆ„๋ฅธ๋‹ค. Spring Initializr: Create a Gradle Project... ๊ฒ€์ƒ‰ํ•ด์„œ ์„ ํƒํ•œ๋‹ค.   3. ์Šคํ”„๋ง๋ถ€ํŠธ ๋ฒ„์ „ ์„ ํƒ์›ํ•˜๋Š” ๋ฒ„์ „์œผ๋กœ ์„ ํƒํ•œ๋‹ค.   4. ์–ธ์–ด ์„ ํƒ์ž์‹ ์ด ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด๋ฅผ ์„ ํƒํ•˜๋ฉด ๋œ๋‹ค.   5. ํ”„๋กœ์ ํŠธ Group Id ์„ค์ •๋””ํดํŠธ๋Š” com.example๋กœ ๋˜์–ด์žˆ๋Š”๋ฐ ํ”„๋กœ์ ํŠธ์™€ ์—ฐ๊ด€์„ฑ ์žˆ๊ฒŒ ์„ค์ •ํ•ด์ค€๋‹ค. ์˜ˆ์‹œ๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ๋””ํดํŠธ๋กœ ์„ค์ •ํ–ˆ๋‹ค.   6. ํ”„๋กœ์ ํŠธ Artifact Id ์„ค์ •์ด๊ฒƒ๋„ ํ”„๋กœ์ ํŠธ์™€ ์—ฐ๊ด€์„ฑ ์žˆ๊ฒŒ ์„ค์ •ํ•ด์ค€๋‹ค. ๋””ํดํŠธ๋Š” demo์ด๋‹ค.   7. ๋นŒ๋“œ ..

Spring 2024.10.30

[Bronze II/JAVA] 10809 ์•ŒํŒŒ๋ฒณ ์ฐพ๊ธฐ

https://www.acmicpc.net/problem/10809   ๋ฌธ์ž์—ด์ด ์ฒ˜์Œ ๋‚˜ํƒ€๋‚œ ์œ„์น˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒŒ ํ—ท๊ฐˆ๋ฆผ์•ŒํŒŒ๋ฒณ (A-Z) ์ด ์ด 26๊ฐœ์ธ ๊ฒƒ์„ ์•Œ์•„์•ผ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์•ŒํŒŒ๋ฒณ ๊ฐœ์ˆ˜๋งŒํผ ๋ฐฐ์—ด์„ ๋งŒ๋“ค๊ณ , ์ž…๋ ฅ๊ฐ’์˜ ์›์†Œ์™€ ๋น„๊ต'์ฒ˜์Œ ๋“ฑ์žฅํ•˜๋Š” ์œ„์น˜' ๋ผ๋Š” ์ถœ๋ ฅ ์กฐ๊ฑด์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋ชจ๋“  ์•ŒํŒŒ๋ฒณ ๋ฐฐ์—ด์„ -1๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด c๊ฐ€ 'a'๋ผ๋ฉด c-'a'๋Š” 0์ด๋ฏ€๋กœ arr[0]์€ 'a'์˜ ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.๋งˆ์ฐฌ๊ฐ€์ง€๋กœ c๊ฐ€ 'b'๋ผ๋ฉด c-'a'๋Š” 1์ด๋ฏ€๋กœ arr[1]์€ 'b'์˜ ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.์ฆ‰ , arr[c-'a']๋Š” ๋ฌธ์ž c๊ฐ€ ์ฒ˜์Œ ๋“ฑ์žฅํ•œ ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ํ’€์ดimport java.io.*;class Main{ public static void main(String[] args) throws..

Algorithm/BOJ 2024.10.29

[Bronze II/JAVA] 10811 ๋ฐ”๊ตฌ๋‹ˆ ๋’ค์ง‘๊ธฐ

https://www.acmicpc.net/problem/10811  ๋ฐฐ์—ด ์ธ๋ฑ์Šค ์ฃผ์˜ํ•  ๊ฒƒ (์ฒซ๋ฒˆ์งธ ๋ฐ”๊ตฌ๋‹ˆ๋Š” 1, ๋‘๋ฒˆ์งธ ๋ฐ”๊ตฌ๋‹ˆ๋Š” 2... ๋ฐฐ์—ด์€ 0๋ถ€ํ„ฐ ์‹œ์ž‘)์™ผ์ชฝ์œผ๋กœ๋ถ€ํ„ฐ i๋ฒˆ์งธ๋ถ€ํ„ฐ j๋ฒˆ์งธ ๋ฐ”๊ตฌ๋‹ˆ๊นŒ์ง€ ์ˆœ์„œ๋ฅผ ์—ญ์ˆœ์œผ๋กœ ๋งŒ๋“ ๋‹ค -> i ๋‚ด ํ’€์ด import java.util.*;class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int M = sc.nextInt(); int[] arr = new int[N]; for(int i=0; i

Algorithm/BOJ 2024.10.25

[Bronze II/JAVA] 3052 ๋‚˜๋จธ์ง€

https://www.acmicpc.net/problem/3052   ๋ฐฐ์—ด๊ณผ HashSet์œผ๋กœ ํ’€์ดํ•  ์ˆ˜ ์žˆ์Œ๋ฐฐ์—ด๋กœ ์ž…๋ ฅ๋ฐ›์•„์„œ ์ด์ค‘for๋ฌธ์„ ๋Œ๋ ค์„œ ๊ฐ’์ด ๊ฐ™์€ ๊ฒฝ์šฐ cnt๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ณ , cnt๊ฐ€ 0์ด๋ฉด ๊ฐ’์ด ๋‹ค๋ฅด๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— diff๋ฅผ ์นด์šดํŠธํ•ด์„œ ์„œ๋กœ ๋‹ค๋ฅธ ๋‚˜๋จธ์ง€๋ฅผ ์ฒดํฌํ–ˆ๋‹ค๋ฌธ์ œ๋Š” ์ž…๋ ฅ๊ฐ’์ด 10๊ฐœ๋ฟ์ด์˜€์ง€๋งŒ ์ž…๋ ฅ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์•„์ง€๋Š” ๊ฒฝ์šฐ ํšจ์œจ์„ฑ์ด ๋–จ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ํ’€์ด ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ด์•ผ๊ฒ ๋‹ค  ๋‚ด ํ’€์ด import java.util.*;class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int[] arr = new int[10]; int diff = 0;..

Algorithm/BOJ 2024.10.23