Coding Test(125)
-
[Programmers] Lv2. k진수에서 소수 개수 구하기 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 소수 판별 부분에서 int 오버플로우가 날 수 있으므로, long long 자료형으로 작성하였습니다. 저 부분 때문에 20분은 소모한 듯해요... 1. n을 k진수로 바꾸어, 문자열로 저장하기 2. k진수 문자열에서 '0'을 기준으로 문자열 분리하기 3. 각 분리된 문자열들을 소수 검사하기 ✏️소스 코드 및 결과 #include #include #include #include using namespace std; string GetKNumber(int n, int k) { st..
2023.06.21 -
[Programmers] Lv2. 타겟 넘버 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 DFS로 풀 수 있습니다. 깊이를 numbers의 크기만큼 내려 갔을 때, 이 때까지의 연산 결과와 target이 같으면 answer++ 해주면 됩니다. 더하는 경우와 빼는 경우 두 가지만 있으므로 2개만 재귀로 작성하면 되겠네요. ✏️소스 코드 및 결과 #include using namespace std; void DFS(const vector& numbers, const int& target, int sum, int idx, int& answer) { if (idx == n..
2023.06.20 -
[Programmers] Lv2. 뉴스 클러스터링 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 중복이 가능한 원소들을 지니고 있어야 하므로, multiset을 사용하였습니다. 1. 주어진 문자열을 두 글짜씩 끊어, 다중집합 만들기 끊어서 만든 두 글자 중 하나라도 알파벳이 아니라면 다음 문자로 넘어간다. 두 글자 모두 알파벳이라면 다중집합에 원소 추가 #include #include using namespace std; multiset CreateMultipleSet(const string& str) { multiset result; int strLength = str...
2023.06.20 -
[Programmers] Lv2. 기능개발 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 큐(Queue)를 이용하여 풀었습니다. 풀이과정은 다음과 같습니다. for 문을 통해, 각 작업을 순회 현재 작업의 배포 가능한 남은 일수를 계산 큐에 아무것도 없다면, push()하고 다음 루프로 이동 큐의 front보다 현재 작업의 배포 가능한 남은 일수가 작다면, front가 배포 될 때 같이 배포되므로 push() 아니라면, 현재 큐에 있는 원소 개수를 answer에 추가하고, 큐 싹 비우기 다 비운 후, 현재 작업의 배포 가능한 남은 일수를 push() for 문을 다..
2023.06.16 -
[Programmers] Lv2. 의상 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 처음에는 백트래킹을 통해 조합으로 풀었는데, 테스트 케이스 1번에서 시간 초과가 났습니다. 아무래도 최대 입력 범위인 30개의 옷이 들어있었던 것 같네요. 어떻게 풀 지 고민하다가, 어느 한 분의 수학적 아이디어를 보고 깨달았습니다. 코니는 하루에 최소 한 개의 의상은 입는다. 의상 종류 A의 옷 개수가 n개라면, 해당 종류의 옷들 중 하나를 골라 입거나, 안 입는 경우의 수는 다음과 같다. \( {n \choose 1} + {n \choose 0} = n + 1 \) 따라서,..
2023.06.15 -
[Programmers] Lv2. 행렬의 곱셈 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 행렬 A와 행렬 B가 있다고 할 때, 다음과 같이 곱셈을 진행합니다. // 행렬 A // 행렬 B 2 3 2 5 4 3 4 2 4 X 2 4 1 3 1 4 3 1 1 ------------------------------------------------------------------------------ /* A의 i번 행과 B의 j번 열 원소들을 각각 곱하여 합하기 */ (2 x 5) + (3 x 2) + (2 x 3) = 22 // A의 0행 x B의 0열 (2 x 4) ..
2023.06.15