본문 바로가기

전체 글

(92)
[1주에 1번 자문자답] About.. 객체지향, HTTP, 선택&삽입 정렬 ✋🏻 객체 지향 프로그래밍이 뭔가요? 객체 지향 프로그래밍이란 컴퓨터 프로그래밍 패러다임 중 하나입니다. 프로그램에서 필요한 데이터를 추상화시키고 상태 와 행위 를 가진 객체를 만들고 객체 간 상호작용을 통해 프로그램을 구성하는 방법입니다. ✋🏻 객체 지향 프로그래밍의 특징을 아는대로 말씀해주세요. 추상화, 캡슐화, 상속, 다형성이 있습니다. 추상화는 불필요한 정보는 빼고 공통적인 속성을 하나의 개념으로 다루는 것입니다. 캡슐화는 외부에서 객체의 특정 속성이나 메서드를 접근하지 못하게 합니다. 이를 통해 객체 내부가 변경되도 외부의 다른 객체에 영향을 주지 않을 수 있습니다. 상속 은 부모 클래스의 속성과 기능을 이어 받아 코드를 재사용하고 기능을 수정하거나 확장할 때 상속 받은 클래스만 수정해서 사용할..
[객체지향] 객체지향의 특징과 설계 원칙 객체지향 특징 추상화 어떤 영역에서 필요로 하는 속성이나 행동을 추출하는 작업 (공통점, 대표적 특징) 캡슐화 캡슐화를 통해 객체 간 낮은 결합도를 유지할 수 있다. 정보은닉 일반화 관계 (상속 관계) 여러 객체들이 가진 공통된 특성을 하나의 개념으로 성립시키는 과정 다형성 서로 다른 클래스의 객체가 같은 메시지를 받았을 때 각자 다른 방식으로 동작하는 능력 객체지향의 설계 원칙 객체지향의 원리를 이용하면 좀 더 유지보수와 확장이 쉬운 소프트웨어를 만들 수 있다. 객체지향의 5대 설계 윈칙 : SOLID 단일 책임 원칙 SRP (Single Responsibility Principle) 모든 클래스는 하나의 책임만을 가진다. 각 클래스는 책임을 완전히 캡슐화 해야 한다. 개방-폐쇄 원칙 OCP (Open..
[DP] 12906 새로운 하노이 탑 python 📄 12906 새로운 하노이 탑 📄 www.acmicpc.net/problem/12906 12906번: 새로운 하노이 탑 첫째 줄에 막대 A에 놓여져 있는 원판의 개수와 막대 A의 상태, 둘째 줄에 막대 B에 놓여져 있는 원판의 개수와 막대 B의 상태, 셋째 줄에 막대 C에 놓여져 있는 원판의 개수와 막대 C의 상태가 주 www.acmicpc.net 🤔 문제 풀이 🤔 pypy3로 채점을 하면 메모리 초과 발생! 이 문제의 핵심은 어떻게 방문 체크를 할것인지를 파악하는 것이다. 기본적인 BFS처럼 배열로 방문체크를 할 수가 없다. 각각의 기둥에 들어가있는 원판을 "/"으로 구분시켜 하나의 문자열로 만든다. 이 후 set()나 dict()를 이용해 문자열의 중복 방문 여부를 확인해주면 된다. ⌨️ 코드 ⌨️..
[DP] 백준 11058 크리보드 python 📄 백준 11058 크리보드 📄 www.acmicpc.net/problem/11058 11058번: 크리보드 N = 3인 경우에 A, A, A를 눌러 A 3개를 출력할 수 있다. N = 7인 경우에는 A, A, A, Ctrl-A, Ctrl-C, Ctrl-V, Ctrl-V를 눌러 9개를 출력할 수 있다. N = 11인 경우에는 A, A, A, Ctrl-A, Ctrl-C, Ctrl-V, Ctrl-V, Ctrl-A, Ctrl-C, Ctrl www.acmicpc.net 🤔 문제 풀이 🤔 버튼 1을 누르는 경우 dp[n] = dp[n - 1] + 1 버튼 2, 3을 누르는 경우는 크기가 증가하지 않으므로 최댓값이 될 수 없다. 버튼 4를 누르는 경우는 ctrl + A, ctrl + C인 2, 3번 버튼이 선행되어..
[BFS, 구현] 백준 16236 아기 상어 python 📄 백준 16236 아기 상어 python 📄 www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net 🤔 문제 풀이 🤔 첫번째 시도에서 정확히 구현하지 못했고 인터넷의 블로그를 참고하여 코드를 완성하였다. 내가 이 문제에서 놓친 포인트는 처음 아기상어의 위치를 저장한 후 맵에서 아기상어 위치를 0으로 바꿔주지 않았다. (크기가 9인 상어로 인식하게 됨) BFS가 사용하는 queue의 속성을 이용해 먹을 수 있는 상어를 찾은 횟수까지만 탐색을 수행하도록 한다...
[DP] 백준 1699 제곱수의 합 python 📄 백준 1699 제곱수의 합 📄 www.acmicpc.net/problem/1699 1699번: 제곱수의 합 어떤 자연수 N은 그보다 작거나 같은 제곱수들의 합으로 나타낼 수 있다. 예를 들어 11=32+12+12(3개 항)이다. 이런 표현방법은 여러 가지가 될 수 있는데, 11의 경우 11=22+22+12+12+12(5개 항)도 가능하다 www.acmicpc.net 🤔 문제 풀이 🤔 숫자가 주어질 때 제곱수의 합으로 나타낼 수 있는 최소 항의 갯수를 구하는 문제이다. 먼저 모든 숫자는 1의 제곱으로 만들 수 있으며 그 때 항의 갯수는 숫자 n일 때 n개 이다. 이제 1부터 n까지 숫자를 증가시켜가면서 각각의 숫자에 대해 최소항의 갯수를 구해보자. 1일 때는 1개이다. 2일 때는 1^2, 1^2 2개이..
[DP] 백준 2133 타일채우기 python 📄 백준 2133 타일채우기 📄 www.acmicpc.net/problem/2133 2133번: 타일 채우기 3×N 크기의 벽을 2×1, 1×2 크기의 타일로 채우는 경우의 수를 구해보자. www.acmicpc.net 🤔 문제 풀이 🤔 n = 2일 때, 2 x 1, 1 x 2타일로 3 x 2 타일을 만들 수 있는 갯수를 세어보면 3가지 경우의 수가 나온다. n = 3일 때, 홀수일때는 어떠한 타일도 만들 수 없다. n = 4일 때는 2가지의 새로운 경우의 수를 찾을 수 있다. n = 6일 때 또한 2가지의 새로운 경우의 수를 찾을 수 있다. 이렇게 짝수로 증가하는 n에서는 모두 2가지의 새로운 경우의 수를 찾을 수 있다. dp[0] = 1, 아무것도 없는 경우의 수 하나 dp[2] = 3, 3가지 경우의..
[DB] 트랙잭션이란? 트랜잭션이란? 데이터베이스 상태를 변환시키는 하나의 논리적인 작업 단위이며 반드시 다같이 수행되어야만 하는 연산 집합 가장 대표적인 예시로 계좌 이체가 있다. A 계좌 잔액 확인 A -> B로 계좌 이체 (A 잔액에서 이체한 금액만큼 빼기) B 계좌 잔액 확인 B

반응형