Combination(4)
-
[BOJ] 1759번 | 암호 만들기 (C++)
🔗문제 보러가기 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 🧑🏻💻풀이 과정 입력에서 모음과 자음을 각각 분리하여 따로 저장합니다. 아래의 조건을 충족하면서, 저장한 모음과 자음을 조합하여 길이가 L이 될 때까지 암호를 생성합니다. 모음은 최소 1개 ~ 최대 L - 2개까지 암호에 포함될 수 있습니다. 자음은 최소 2개 ~ 최대 L - 1개까지 암호에 포함될 수 있습니다. 생성한 암호의 길이가 L이 되었다면, 암호를 오름차순으로 정렬합니다. 중복을 피하기 위해, 정렬한 암호를 set 자료구조에 저장합니다. 모..
2023.08.25 -
[BOJ] 15686번 | 치킨 배달 (C++)
🔗문제 보러가기 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 🧑🏻💻풀이 과정 보자마자 조합(Combination)이 떠오르긴 했는데, 이게 정말 단순히 조합만으로 풀릴까?... 시간 초과가 걸리진 않을까?, 중복 계산을 줄일 수 있는 방법이 없을까? 고민을 했는데, 쓸 데 없는 고민이었단 걸 깨달았습니다. 아무래도 집의 개수가 2N개를 넘지 않고, N과 M의 개수가 그렇게 크지 않기 때문인 것 같네요. 게다가, 집과 치킨 집만 사용하니 \( N \times N \) 크기를 모두 탐색할..
2023.08.24 -
[Programmers] Lv2. 거리두기 확인하기 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 1. 주어진 대기실을 순회하며, 각 응시자들 좌표(행, 열)값 저장하기 2. 저장한 응시자들 좌표를 중복 없이 2개 뽑아, 거리두기 유무 검사하기 - 맨해튼 거리가 2보다 클 경우에는 거리 두기를 잘 지키고 있다고 판정 - 맨해튼 거리가 2보다 작을 경우에는 거리 두기를 지키지 않고 있다고 판정 - 맨해튼 거리가 2일 경우 (P1, P2가 있다고 가정) - 가로로 한 칸 띄어져 있는 경우 : P1.column + 1 부분을 검사 (P1.column < P2.column) - 세..
2023.06.09 -
[Programmers] Lv0. 구슬을 나누는 경우의 수 | C++
🔗문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 문제를 딱 읽어 봤을 때, 조합(Combination) 문제란 게 떠올랐습니다. C++ STL에는 순열과 조합을 구현해 놓은 라이브러리가 없나 찾아봤는데, next_permutation이라는 순열 라이브러리만 있더군요. 그래서, 그냥 직접 작성하여 풀어보기로 했습니다. 그런데, 문제가 될 만한 사항들이 다음과 같았습니다. balls와 share의 개수가 최대 30인데, 30!은 2.6525285981219105863630848e+32 라는 숫자가 나올만큼 어마어마하게 큽니다. 분수..
2023.02.08