반응형
https://school.programmers.co.kr/learn/courses/30/lessons/181908
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
답
#include <bits/stdc++.h>
using namespace std;
int solution(string my_string, string is_suffix) {
int result;
vector<string> suffix;
for(int i=0;i<my_string.size();i++){
suffix.push_back(my_string.substr(i,my_string.size()-i));
}
if(find(suffix.begin(),suffix.end(),is_suffix)!=suffix.end()){
result=1;
}
else{
result=0;
}
return result;
}
1. 변수
- 'result': 'is_suffix'가 'my_string'의 접미사인지 여부를 저장한다.
(접미사면 1, 아니면 0) - 'suffix': 'my_string'의 모든 가능한 접미사를 저장한다.
2. 접미사 생성
- 'for'을 사용하여 'my_string'의 모든 가능한 접미사를 생성한다.
이를 위해 'substr'을 사용하여 'i'부터 마지막 까지의 부분 문자열을 추출한다.
('i'는 1부터 'my_string'의 길이까지 증가한다.)
3. 접미사 확인
- 'find'함수를 사용하여 'suffix' 안에서 'is_suffix' 문자열을 찾는다.
만약 'is_suffix'가 'suffix' 안에 없다면, 'find'함수는 'suffix.end()'를 반환한다. - 'if'문을 통해 'find'함수의 반환값이 'suffix.end()'와 다른지 확인한다.
다르면'is_suffix'는 'my_string'의 접미사이므로 'result'를 1로 한다.
같으면 'is_suffix'는 접미사가 아니므로 'result'를 0으로 한다.
4. 결과
- 'result' 변수를 반환한다.(1은 접미사,0은 아님)
참고
'std::find' 함수
- 주로 vector에서 특정 요소를 찾는데 사용한다.
지전된 범위에서 값을 찾고, 그 값을 가리키는 반복자를 반환한다. - '<agorithm>' 해더파일에 있다.
find(시작 반복자, 끝 반복자, 찾고자 하는 값);
if(find(prefix.begin(),prefix.end(),is_prefix)!=prefix.end()){
- '시작 반복자'와 '끝 반복자'는 검색할 범위를 지정하고, '찾고자 하는 값'이 찾으려는 요소이다.
(찾는 값이 있으면 해당 값의 반복자를 반환하고, 찾는 값이 없으면 마지막 반복자 'end()'를 반환한다.)
- 마지막 반복자 'end()'와 다른지를 사용해서 vector안에 찾으려 하는 값이 있는지 확인 할 수 있다.
'substr' 함수
- 문자열의 특정 부분을 추출하는데 사용한다.
str.substr(시작 인덱스, 길이);
my_string.substr(0,i)
- '시작 인덱스'는 추출을 시작하는 위치, '길이'는 추출할 문자열의 길이이다.
- 'my_string' 문자열에서 0번째(처음)부터 i만큼 을 추출할 수 있다.
가능한 모든 접미사를 생성하고 생성된 접미사에 'is_suffix'를 찾고 그에 따라 결과를 반환하는 프로그램이다.
그러나 이렇게 하면 모든 접미사르 생성하고 저장해야 하기 때문에 메모리 사용량이 크고
'find'함수를 사용할때 시간이 많이 소요된다.
하지만 이 문제에서는 시간소요와 메모리 사용에 대한 조건이 없었고, 큰 문자열을 담당하지 않기 때문에 이렇게 풀어도 됬었다.
끝
반응형
'c++ > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 코드 처리하기(c++) (2) | 2024.01.31 |
---|---|
[프로그래머스] 접미사 배열(c++) (0) | 2024.01.28 |
[프로그래머스] 접두사인지 확인하기(c++) (2) | 2024.01.27 |
[프로그래머스] 간단한 식 계산하기(c++) (4) | 2024.01.23 |
[프로그래머스] 세 개의 구분자(c++) (2) | 2024.01.13 |