일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- SW Expert Academy
- 15686번
- 프로그래머스
- QueryDSL 기초
- 백준 알고리즘
- 14499번
- 1038번
- 16234번
- 감소하는 수
- 9095번
- 파이썬
- 1789번
- 거울 설치
- 19238번
- 베스트엘범
- 17144번
- 미세먼지 안녕!
- 2020 카카오 인턴십
- 수식 최대화
- 빛의 경로 사이클
- 12869번
- 어른 상어
- 보석 쇼핑
- SW ExpertAcademy
- 스타트 택시
- 경주로 건설
- 12865번
- 키패드 누르기
- HTML 기초
- python
- Today
- Total
목록Category (94)
보물창고 블로그

전략 패턴이란 여러 알고리즘을 하나의 추상적인 접근점을 만들어 접근 점에서 서로 교환 가능하도록 하는 패턴입니다. 추상적인 접근점이란 자바(Java)에서 인터페이스(Interface)를 지칭하는 것이고, 인터페이스를 통해 인터페이스를 상속하는 하위 클래스를 변경 가능하게 하는 것입니다. 코드로 살펴보겠습니다. 위 사진과 같이 party라는 인터페이스를 만들었습니다. 그리고 상속받는 클래스들에게 propagandize라는 함수를 만들게 하였습니다. 이후 party를 상속받는 클래스들을 만들었습니다. party를 상속받은 클래스 내부에서 propagandize함수를 재정의하였습니다. 파티를 멤버 변수로 가질 person 클래스를 선언하였습니다. 이후 메인에서 다음과 같이 실행하였습니다. 먼저 person 객..
문제 링크: www.acmicpc.net/problem/1038 1038번: 감소하는 수 음이 아닌 정수 X의 자릿수가 가장 큰 자릿수부터 작은 자릿수까지 감소한다면, 그 수를 감소하는 수라고 한다. 예를 들어, 321과 950은 감소하는 수지만, 322와 958은 아니다. N번째 감소하는 수를 �� www.acmicpc.net 문제는 N번째 감소하는 수를 구하는 것입니다. 처음에 이 문제를 보면 상당히 막막하지만, 천천히 생각해보면 의외로 간단합니다. 저는 1 자릿수부터 10 자릿수까지(9876543210) 천천히 숫자를 만들고 이때마다 count 수를 늘려서 count수가 N과 같아질 때 감소하는 수를 출력하도록 하였습니다. 파이썬으로 해결한 코드는 아래와 같습니다. import sys n = int..
문제 링크: www.acmicpc.net/problem/1789 1789번: 수들의 합 첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다. www.acmicpc.net 문제는 '서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까?'입니다. 서로 다른 N개의 자연수의 합이 S라고 할 때 N을 최댓값으로 하기 위해서는 1부터 작은 수들을 차례대로 더하여 S보다 커질 때보다 1개 적을 때가 N의 최댓값입니다. 예제를 보면 200이 주어졌을 때, 1부터 20까지 더하면 210이 되고 1부터 19까지 더하면 190이 됩니다. 따라서 1부터 18까지 더하고 200까지 모자란 수를 마지막 수로 정하면 19개가 최대가 됩니다. 그렇다면 N의 최댓값은 어디까..
문제 링크: www.acmicpc.net/problem/12869 12869번: 뮤탈리스크 1, 3, 2 순서대로 공격을 하면, 남은 체력은 (12-9, 10-1, 4-3) = (3, 9, 1)이다. 2, 1, 3 순서대로 공격을 하면, 남은 체력은 (0, 0, 0)이다. www.acmicpc.net 저는 SCV의 개수에 따라 CASE분류를 통하여 문제를 해결하였습니다. 먼저 SCV수가 1마리일 경우 SCV체력을 9로 나누어 나머지가 0일 경우 몫을 출력하고 아닐 경우 몫+1의 값을 출력하였습니다. SCV가 2마리 이상일 경우에는 DFS(깊이 우선 탐색)으로 문제를 해결하였습니다. 만약 현재 최소의 횟수보다 같거나 높아진다면 분기하지 않는 백 트레킹을 사용하였고, 한 번만 탐색한 것을 체크하기 위해 SC..