본문 바로가기
c++/프로그래머스

[프로그래머스] 배열 만들기 5(c++)

by ilp 2024. 2. 1.
반응형

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

 

프로그래머스

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

programmers.co.kr



#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<string> intStrs, int k, int s, int l) {
    vector<int> answer;
    int temp;
    for(int i=0;i<intStrs.size();i++){
        temp=stoi(intStrs[i].substr(s,l));
        if(temp>k){
            answer.push_back(temp);
        }
    }
    
    return answer;
}
1. 변수
  • 'answer': 조건의 맞는 정수들을 저장하기 위해 사용된다, 최종적으로 반환된다. (초기에는 비어있다.)
  • 'temp': for문 안에서 각 문자열의 부분 문자열을 정수로 변환한 값을 임시로 저장하는 변수이다.

2. 메인 for문

  • 입력된 문자열 vector 'intStrs'의 각 문자를 순차적으로 처리한다.
  • 'i'는 0부터 'intstrs.size()' 까지 증가한다.

2-1. 문자열에서 정수 추출 / 조건 검사 및 결과 추가

  • temp = stoi( intStrs[i].substr(s, l) );
    • 'substr(s, l)''intStrs[i]'문자열에서 's'인덱스부터 'l'의 부분 문자열을 추출한다.
    • 'stoi'함수는 이 부분 문자열을 정수( int )로 변환한다. 
  • if( temp > k){
    • 추출된 정수 'temp'가 매개변수 'k'보다 큰지 확인한다.
    • 조건이 참이면, 즉 'temp''k'보다 크면
      'temp''answer'에  추가한다.
  • 'else'는 현재 문자가 '0'이 아니거나, 이미 '0'이 아닌 문자를 만났을때에 해당한다.
    • 'a' 'false'로 하여 '0'을 찾는 과정이 끝났음을 표시한다.
    • 현재 문자를 'answer'에 추가한다.

3. 결과

  • 'answer'을 반환한다.
  • 'answer'은 조건을 만족하는 정수들을 포함한다.

 

 

참고

'substr' 함수

  • 문자열의 특정 부분을 추출하는데 사용한다.
str.substr(시작 인덱스, 길이);
intStrs[i].substr(s,l)

- '시작 인덱스'는 추출을 시작하는 위치, '길이'는 추출할 문자열의 길이이다.

- 'intStrs[i]' 에서 's'번째 부터 'l'만큼 을 추출할 수 있다.

 

 

'stoi' : 문자열를 정수로

'stof' : 문자열를 float로

'stol' : 문자열을 long으로

'stod' 문자열을 double


반응형