본문 바로가기

알고리즘/[프로그래머스]Lv.0

[프로그래머스]Lv0. 문자열안에 문자열

본 페이지는 C++ 독학을 위해 작성한 포스트입니다 풀이과정도 포함되어있지만 문법공부에 대한 비중이 있습니다.
(+  Java언어 내용도 포함되어있습니다. )

 

https://school.programmers.co.kr/learn/courses/30/lessons/120908

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1.문제설명

문자열 str1, str2가 매개변수로 주어집니다. 
str1 안에 str2가 있다면 1을 없다면 2를 return하도록 solution 함수를 완성해주세요.

제한사항
1 ≤ str1의 길이 ≤ 100
1 ≤ str2의 길이 ≤ 100

입출력 예 설명
입출력 예 #1
"ab6CDE443fgh22iJKlmn1o" str1에 str2가 존재하므로 1을 return합니다.
입출력 예 #2
"ppprrrogrammers" str1에 str2가 없으므로 2를 return합니다.

 

2. 문제해결 접근

  •  find()함수를 이용하여 부분 문자열이 포함여부를 확인할 수 있다

3. C++ 답안

#include <string>
#include <vector>

using namespace std;

int solution(string str1, string str2) {
    int answer = 0;
    if( str1.find(str2) == string::npos )answer=2;
    else answer = 1;
    
    return answer;
}

어렵지 않게 풀 수 있는 문제이지만, find()의 차이에 대해 남기고자 기록하게 되었다.

 

 

4. C++ 문법 설명과 표현법

 

C++에서의 find

문자열을 찾는 방법은 string에서 find함수를 사용한다.

표현법

str1.find("찾고자하는 문자열")

간단한 문법으로 문자열을 찾을 수 있지만,C++에서는 반환값을 특히 유의해야한다.

타 언어에서는 true / false로 반환하는 등의 경우가 있지만,

C++에서는 그 문자열의 위치(배열번호의 위치)를 반환한다.

 

그렇기 때문에, 해당문자열이 존재하지 않는지에 대해서 확인하기 위해서는

 str1.find(str2) == string::npos

의 조건을 사용하여 확인할 수 있다.


 

 참고페이지

https://kamang-it.tistory.com/437

 

[c++][string]문자열 이야기 (1) - 문자열에서 포함된 문자열 찾기

c++에서 문자열을 찾는 방법, 즉 string에서 특정 substring을 찾는 방법은 find 함수를 사용하는 것이다.이 함수는 쉽고 강력하지만 사용에 조금은 주의를 요하는 함수이다. find는 총 5개로 오버로딩

kamang-it.tistory.com