2023. 9. 24. 12:07, 알고리즘/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/120888
#include <string>
#include <vector>
using namespace std;
int a[200];
string solution(string str) {
string answer = "";
for(auto c: str){
if(a[int(c)]==1) continue;
answer+=c;
a[int(c)]=1;
}
return answer;
}
위는 내가 작성한 풀이이고, 다른 사람의 풀이를 보니까, unordered_set 을 이용한 짧은 풀이가 있기에 첨부해본다.
#include <string>
#include <vector>
#include <unordered_set>
using namespace std;
string solution(string my_string) {
string answer = "";
unordered_set<char> us;
for(const auto v : my_string)
{
if(!us.count(v))
{
answer.push_back(v);
us.insert(v);
}
}
return answer;
}
unordered_set 과 unordered_set 내부함수 count()를 알면 사용할 수 있는 풀이이다.
이 코드는 문자열에서 중복된 문자를 제거하는 함수를 구현한 예제입니다. 아래는 코드의 동작과 주요 구성 요소에
대한 설명입니다:
1. `string solution(string my_string)`: 이 함수는 문자열 `my_string`을 받아서 중복된 문자를
제거한 결과 문자열을 반환합니다.
2. `unordered_set<char> us;`: `unordered_set` 컨테이너인 `us`를 사용하여 중복된 문자를 추적합니다.
`unordered_set`은 중복을 허용하지 않는 컨테이너로, 새로운 문자를 발견할 때마다 이 컨테이너에 문자를 추가합니다.
3. `for(const auto v : my_string)`: 입력 문자열 `my_string`을 반복하면서 각 문자를 검사합니다.
4. `if(!us.count(v))`: 현재 문자 `v`가 `us` 셋에 없는 경우 (즉, 중복되지 않은 경우) 아래의 두 가지
작업을 수행합니다.
- `answer.push_back(v)`: 중복되지 않은 문자를 결과 문자열 `answer`에 추가합니다.
- `us.insert(v)`: 중복 문자를 `us` 셋에 추가하여 중복을 추적합니다.
5. 반복이 끝나면 중복을 제거한 문자열이 `answer`에 저장되어 반환됩니다.
예를 들어, 입력 문자열 `"programming"`이 주어진 경우, 중복 문자를 제거한 결과는 `"progamin"`이 됩니다.
이 코드는 중복 문자를 효율적으로 제거하고 결과 문자열을 생성하기 위해 해시 셋을 사용하여 중복 문자를 검출합니다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
Lv 0. 가까운 수 - pair 에 emplace_back()을 쓰고 싶다면, {a,b}를 넣는대신 (a,b) 형태로 넣자. (0) | 2023.09.25 |
---|---|
Lv 0. 삼각형의 완성조건 (1) (0) | 2023.09.24 |
Lv 0. 배열 원소의 길이 (0) | 2023.09.24 |
Lv 0. 컨트롤 제트 (0) | 2023.09.24 |
Lv 0. 소인수분해 (0) | 2023.09.22 |
Comments, Trackbacks