2023. 10. 1. 18:16, 알고리즘/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/120913
#include <string>
#include <vector>
using namespace std;
vector<string> solution(string str, int n) {
vector<string> answer;
for(int i=0; i<str.length();i+=n){
string tmp="";
for(int j=0; j<n; j++){
if(i+j>=str.length()) continue;
tmp+=str[i+j];
}
answer.emplace_back(tmp);
}
return answer;
}
위와 같은 코드를 작성하여서 제출하였다.
이중for문을 만든뒤에, 범위만큼 잘라서 임시 tmp 스트링을 만들어서 해당 스트링을 answer에 넣는 형태로 만들었다.
이때에 i+j>=str.length(); 인 경우는 문제가 발생하니까 그렇게 되는 범위면 continue로 tmp+=str[i+j]; 을 시행하지 않도록 코드를 작성했다.
다른 사람의 풀이를 찾아보니, substr() 함수를 사용하는 풀이를 발견할 수 있었다. substr() 함수의 경우는 그동안 많이 사용해보지 않아서 생각을 하지 못했는데, 다음에는 이런 형태의 문제를 접하게 되면 substr 함수를 사용해서 풀어보도록 하자.
#include <string>
#include <vector>
using namespace std;
vector<string> solution(string my_str, int n) {
vector<string> answer;
for (int i=0; i<my_str.length(); i+=n){
answer.push_back(my_str.substr(i,n));
}
return answer;
}
맨 위에 내가 작성한 코드처럼 스스로 스트링의 인덱스에 접근하는 형태로 하면 잘못된 인덱스에 접근하지 않도록 신경을 써야하는데,
substr() 함수를 사용하면 그런식의 고려를 하지 않아도 되는 것으로 보여진다. 그래서 substr() 을 제대로 알고 있다면 substr() 함수를 상요하는것이 훨씬 안전하게 코드를 작성할 수 있는 방법이라고 생각된다. substr() 함수를 적극적으로 활용하자.
C++의 `substr()` 함수는 문자열에서 부분 문자열을 추출하는 데 사용됩니다. 이 함수는 다음과 같은 형식을 가집니다:
```cpp
string substr (size_t pos, size_t len) const;
```
- `pos`: 추출을 시작할 위치를 나타내는 인덱스(0부터 시작).
- `len`: 추출할 부분 문자열의 길이.
`substr()` 함수는 원본 문자열에서 지정된 위치 `pos`에서 시작하여 지정된 길이 `len`만큼의 부분 문자열을 새로운 문자열로 반환합니다. 반환된 부분 문자열은 원본 문자열을 변경하지 않습니다.
예를 들어, 다음과 같이 사용할 수 있습니다:
```cpp
#include <iostream>
#include <string>
int main() {
std::string original = "Hello, World!";
std::string sub = original.substr(7, 5); // "World"
std::cout << sub << std::endl;
return 0;
}
```
이 코드에서 `substr(7, 5)`는 원본 문자열에서 7번 인덱스부터 시작하여 5개의 문자를 추출하여 "World"를 반환합니다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
| Lv 0. 머쓱이보다 키 큰 사람 (0) | 2023.10.01 |
|---|---|
| Lv 0. 중복된 숫자 개수 - algorithm 헤더에 있는 count() 함수를 사용해보자. (0) | 2023.10.01 |
| Lv 0. 7의 개수 (0) | 2023.10.01 |
| Lv 0. 문자열 정렬하기 (0) | 2023.09.29 |
| Lv 0. 세균 증식 (0) | 2023.09.29 |
Comments, Trackbacks
