본문 바로가기

전체 글239

[백준 *Java] - N과 M (9) (15663) N과 M(9) 15663번: N과 M (9) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 👇 문제보기 더보기 문제 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수 중에서 M개를 고른 수열 입력 첫째 줄에 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8) 둘째 줄에 N개의 수가 주어진다. 입력으로 주어지는 수는 10,000보다 작거나 같은 자연수이다. 출력 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며.. 2022. 4. 5.
[디자인 패턴] 싱글턴 패턴(Singleton pattern)이란? 인스턴스가 하나 뿐인 특별한 객체를 만들 수 있게 해주는 패턴입니다. 싱글턴 패턴은 다이어그램만 놓고 보면 그 어떤 패턴보다도 간단합니다. 클래스 다이어그램에 클래스가 달랑 하나 밖에 없으니깐요. 클래스 디자인 관점에서 보면 아주 단순하지만, 구현하는 데 쉽지 않습니다. 어떤용도로 사용할까요? 스레드 풀 캐시 대화상자 사용자 설정 레지스트리 설정을 처리하는 객체 로그 기록용 객체 프린터 그래픽 카드 같은 디바이스를 위한 디바이스 드라이버 같은 걸로 예로 들 수 있습니다. public으로 선언된 거라면 클래스는 언제든 인스턴스를 만들 수 있습니다. 객체를 생성하는 방식은 new 연산자를 사용을 하면 된다는 걸 알고 계실겁니다. 만약 위와 같이 public 클래스로 선언하지 않은 클래스라면 같은 패키지 안에.. 2022. 4. 4.
그래프와 트리의 차이는? [ 그래프 (Graph) ] 2개 이상의 경로가 가능하다. 노드들 사이에 무방향 / 방향 에서 양방향 경로를 가질 수 있다. Self-Loop 뿐 아니라, Loop / Circuit 모두 가능하다. 루트 노드라는 개념이 없다. 부모-자식 관계라는 개념이 없다. 그래프 순회는 DFS나 BFS로 이루어진다. 그래프는 Cyclic 혹은 Acyclic 이다. 간선의 유무는 그래프에 따라 다르다. 그래프는 네트워크 모델이다. [ 트리 (tree) ] 트리는 그래프의 특별한 케이스이며, "최소 연결 트리" 라고도 불린다. 두 개의 정점 사이에 반드시 1개의 경로만을 가진다. Loop 나 Circuit이 없다. 당연히 Self-Loop 도 없다 한 개의 루트 노드만이 존재하며, 모든 자식 노드는 한 개의 부모 노드만.. 2022. 4. 4.
Git과 Github에 대해서... [ Git ] 로컬에서 관리되는 버전 관리 시스템 (VCS : Version Control System) 소스코드 수정에 따른 버전을 관리해주는 시스템 [ Github ] 클라우드 방식으로 관리되는 버전 관리 시스템 자체 구축이 아닌 빌려 쓰는 클라우드 개념 오픈소스는 일정 부분 무료로 저장 가능, 아닐 경우 유료 사용 분산 버전 제어, 엑세스 제어, 소스코드 관리, 버그 추적, 기능 요청 및 작업관리 제공하는 플랫폼 깃을 사용하는 프로젝트를 지원하는 웹호스팅 서비스 위에 정리한 걸 풀어 설명하자면, 깃은 로컬에서 버전 관리 시스템을 운영하는 방식이고, 깃허브는 저장소를 깃허브에서 제공해주는 클라우드 서버를 이용한다는 차이입니다. 따라서, 다른 사람들과 협업을 하게 될 경우, 또는 오픈 소스를 공유하고 .. 2022. 4. 3.
[백준 *Java] - N과 M 시리즈1,2 (15649,15650) N과 M (1) 문제보기 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net N과 M (2) 문제보기 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 👇 접근방식 [내생각 정리] 더보기 이진트리로 그려보았습니다. 이 문제는 중복없이라는 말이 들어가서, 하나씩 탐색을 하고, 빽하고 다시 탐색하고. 이 과정을 반복하는데,.. 2022. 4. 1.
백트래킹(Backtracking) 이란? 백트래킹이란? 재귀적으로 문제를 하나씩 풀어가되, 현재 재귀를 통해 확인 중인 상태(노드)가 제한 조건에 위배되는지 (유망[promising]하지 않은지) 판단하고 그러한 경우 해당 상태(노드)를 제외하고 다음 단계로 나아가는 방식이다. 백 트래킹은 현재 상태(노드)에서 다음 상태(노드)로 나아갈 수 있는 모든 경우를 찾되, 그 중 유망하지 않다면? 현재에서 더이상 나아기자 않고 이전의 상태(노드)로 돌아가 다음 상태(노드)를 검사합니다. 여기서 더 이상 탐색할 필요 없는 상태(노드)를 제외하는 것을 가지치기(pruning) 이라고 합니다. 백트래킹을 사용하는 알고리즘 중 하나는 대표적으로 DFS가 있습니다. DFS는 재귀를 통해 가능한 경로 중 유망한 경로만 찾아서 탐색을 수행한 뒤, 다시 돌아와 그 .. 2022. 4. 1.