본문 바로가기
728x90

코드6

디자인 패턴 및 프로그래밍 패러다임 디자인 패턴이 생겨난 이유와 장점 개발을 하다보면 이전에 사용했던 이전의 코드를 들여다보는 경험을 종종 하게 됩니다. 그러다 전에 사용했던 코드(해결책)을 그대로 복붙하기도 하고, 변형해서 쓰기도 하고, 혹은 상황에 맞지 않다고 판단하여 다른 방향의 구현을 고민하기도 합니다. 디자인 패턴은 재사용이 가능한 설계를 하도록 돕습니다. 따라서 클래스의 명세, 객체 간의 상호작용, 유지보수, 문서화 등을 개선할 수 있습니다. 디자인 패턴 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 '규약' 형태로 만들어둔 것 즉, 일종의 솔루션 아키텍처 패턴 MVC : Model / View / Controller의 기능을 수행하는 계층으로 나누어 관리하는 방법. MVP MVV.. 2023. 1. 20.
[백준] 20186. 수 고르기 (2020 정올 2차 초등부 1번)<C++> www.acmicpc.net/problem/20186 20186번: 수 고르기 첫 번째 줄에 주어진 N개의 수 중 K개의 수를 고를 때, 전체점수의 최댓값을 출력한다. www.acmicpc.net 나의 풀이: 가장 큰 수를 k개만큼 고르기만 하면 되는 문제이다. 가장 큰 수를 고르기 위해 정렬을 해준 후 뒤의 수 k개를 vector에 담아준다. 입력 받은 배열을 훑어보며 vector에 있는 수라면 더해준다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 #include #include #include using namespace std; .. 2020. 11. 17.
[NYPC] [2019 예선] 1. 최대 HP 문제 당신은 게임 "마비노기 영웅전"의 전투 로그 분석을 맡게 되었다. 이번에 분석할 전투는 마법 전문가인 이비의 전투이다. 이비는 몬스터와 전투를 했고, 이 때 전투 과정에서 발생하는 게임 로그인 전투 로그는 시작 체력과 여러 개의 턴으로 이루어져 있다. 그리고 각 턴 마다 다음의 로그가 한 줄에 하나씩 기록되어있다. 이비가 데미지를 받는다. 이 턴 이후에 체력이 h 만큼 줄어든다. 단, 데미지를 받아서 체력이 0 이하가 되는 경우는 없었다. 이 로그는 1 h 형태로 기록된다. 이비가 "회복" 스킬을 사용한다. 이 턴 이후에 체력이 h만큼 회복된다. 단, 회복을 해서 최대 체력을 넘어가는 경우는 없었다. 이 로그는 2 h 형태로 기록된다. 이비가 "최대 생명력" 스킬을 사용한다. 이 턴 이후에 체력이 .. 2020. 8. 30.
[codeground] Practice. 11. 개구리 뛰기 문제 일직선 상에 돌들이 놓여있고, 개구리가 처음에는 '좌표 0'에 위치한 돌 위에 앉아 있다. '좌표 0'에는 돌이 항상 놓여 있고, 모든 돌들은 정수 좌표에 놓여 있다. (그림 1) [ 그림 1 ] 개구리는 점프를 통해서 돌들 사이를 이동해서 마지막 돌까지 이동해야 한다. 이 때, 개구리가 한번의 점프로 이동 가능한 최대 거리 K 가 주어진다. 개구리는 한번의 점프로 자신이 앉아 있던 돌에서 K 이하의 거리에 위치한 돌들 중 하나의 돌로 이동 할 수 있다. 여기서 문제는, '좌표 0'에 위치한 개구리가 마지막 돌까지 이동할 수 있다면, 마지막 돌까지 이동하기 위한 최소 점프 횟수를 계산하는 것이다. 예를 들어서, 위의 "그림1"의 예에서 보면, 한번의 점프로 이동 가능한 최대 거리가 K=4 로 주어질.. 2020. 8. 26.
[codeground] Practice. 3. 시험 공부 문제의 핵심은 n개의 숫자 중에서 가장 큰 k개의 합을 구하는 것 정렬을 해서 뒤부터 k개를 골라 더하면 되는 간단한 문제이다. #include #include #include using namespace std; int Answer; int main() { int T, test_case; int n, k; vector arr; cin >> T; for (test_case = 0; test_case > n >> k; arr.assign(n, 0); for (int i = 0; i > arr[i]; } sort(arr.begin(), arr.end()); for (int i = n - 1; i >= n - k;.. 2020. 8. 26.
[NYPC] [2019 예선 연습] 1. 비밀번호 검사 문제 어떤 웹사이트에 회원가입하기 위해서 다음과 같은 비밀번호 조건들이 있다. 입력으로 들어온 문자열이 다음 조건을 만족하는지 확인하는 프로그램을 작성하시오. 비밀번호는 8자 이상 15자 이하이어야 한다. 비밀번호에 영어 대문자가 반드시 포함되어야 한다. 비밀번호에 영어 소문자가 반드시 포함되어야 한다. 비밀번호에 숫자가 반드시 포함되어야 한다. 비밀번호에 특수문자가 반드시 포함되어야 한다. 입력 형식 입력으로 들어오는 문자열의 최대 길이는 100자이다. 문자열은 영어 대소문자, 숫자, 그리고 특수문자로만 구성되어있다. 특수문자는 `!@#$%^&*()-=_+|;:'"/?,.~[]{}``만 주어진다. 출력 형식 입력으로 들어온 문자열이 웹사이트에서 요구하는 조건을 만족하는 문자열이라면 valid를 출력하고.. 2020. 8. 25.
728x90