소수(3)
-
[BOJ] 1644번 | 소수의 연속합 (C++)
🔗문제 보러가기 1644번: 소수의 연속합 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 4,000,000) www.acmicpc.net 👨💻풀이 과정 2부터 N까지 소수를 구하는 "에라토스테네스의 체" 알고리즘 1번에서 구한 소수들의 누적합을 저장해 둔 배열 투 포인터를 사용하여 부분 구간을 이동해가며, N이 나오는 구간의 개수를 카운트 위 순서대로 저는 문제를 풀었습니다. 투 포인터와 관련된 소스 코드는 많이 작성해보지 않아서 그런지, 짜는 데에 조금 시간이 걸리네요. ✏️소스 코드 및 결과 #include #include using namespace std; #define FAST_IO ios::sync_with_stdio(false); cout.tie(NULL); cin.tie(NULL); ..
2024.02.07 -
[Programmers] Lv2. 숫자 블록 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 n번째 블록에 놓여질 숫자는 n이 소수일 경우엔 1, 아닐 경우에는 10,000,000보다 작은 제일 큰 약수입니다. 제곱근 방식을 이용하여 약수와 소수를 찾는 데에 시간을 효율적으로 절약할 수 있습니다. 현재 점검하려는 숫자를 i라고 한다면, n / i \( \leq 10,000,000 \) 이라면, n / i가 가장 큰 약수가 됩니다. 가장 큰 약수를 찾았으므로 반복문을 종료합니다. 아니라면, i를 선택한 후에 다음 루프로 넘어가도록 합니다. n이 1인 경우에는 0이 적힌 ..
2023.07.04 -
[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