2023. 11. 8. 01:42, 알고리즘/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/42839
#include <bits/stdc++.h>
using namespace std;
map<int, bool> M;
bool isPrime(string num){
int n = stoi(num);
if(M[n]) return false;
M[n] = true;
if(n == 1 || n == 0) return false;
if(n == 2) return true;
for(int i=2; i<=sqrt(n); i++){
if(n % i == 0){
M[n] = false;
return false;
}
}
M[n] = true;
return true;
}
int solution(string numbers) {
int answer = 0;
sort(numbers.begin(), numbers.end());
do{
for(int i=1; i<=numbers.size(); i++){
string num = numbers.substr(0, i);
if(isPrime(num)) answer++;
}
}while(next_permutation(numbers.begin(), numbers.end())); //next_permutation을 통해서 다음 순열로 테스트
return answer;
}
이때에 substr(a, b)에 대해서 제대로 이해하기 위해 추가하는 사항.
`substr(a, b)` 함수는 문자열에서 문자열의 일부를 추출하는 데 사용됩니다. 여기서 `a`와 `b`는 다음과 같은 의미를 갖습니다:
- `a`: 시작 인덱스. 추출을 시작할 문자열 내의 위치를 나타냅니다. 이 위치부터 추출이 시작됩니다. 인덱스는 0부터 시작하며, 첫 번째 문자는 0번 인덱스에 해당합니다.
- `b`: 추출할 문자의 길이. 이 값은 시작 인덱스 `a`부터 시작하여 추출할 문자열의 길이를 나타냅니다. 즉, `a` 위치부터 `a + b - 1` 위치까지의 문자열을 추출합니다.
예를 들어, 문자열 "Hello, World!"에 대해 다음과 같은 예시를 고려해보겠습니다:
- `substr(0, 5)`은 문자열의 시작부터 5개의 문자를 추출하므로 "Hello"를 반환합니다.
- `substr(7, 5)`은 인덱스 7부터 시작하여 5개의 문자를 추출하므로 ", Wor"를 반환합니다.
- `substr(0, 1)`은 문자열의 시작부터 1개의 문자를 추출하므로 "H"를 반환합니다.
이러한 방식으로 `substr()` 함수는 문자열 내에서 원하는 부분 문자열을 선택하고 반환할 수 있습니다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 lv 2. 87946 피로도 c++ (0) | 2023.11.08 |
---|---|
프로그래머스 lv 2. 42842 카펫 c++ (0) | 2023.11.08 |
프로그래머스 lv 1. 42840 c++ 모의고사 (0) | 2023.11.01 |
프로그래머스 lv 1. 86491 c++ 최소직사각형 (0) | 2023.11.01 |
프로그래머스 lv 2. 42747 c++ H-index (0) | 2023.10.31 |
Comments, Trackbacks