[프로그래머스 / C++] 0 떼기

YH·2023년 10월 18일
0

문제

0 떼기 : 문제 링크


문제 분석

  • 정수로 이루어진 문자열 n_str이 주어질 때, n_str의 가장 왼쪽에 처음으로 등장하는 0들을 뗀 문자열을 return
  • 문자열에서 0을 제외하고 시작하는 위치를 찾기위한 find라는 정수형 함수를 만듬. 해당 함수는 매개변수로 문자열을 받고, for loop를 통해 문자열의 첫번째 원소부터 마지막까지 검사하여 0을 제외한 문자를 만나면 해당 인덱스 번호를 반환
  • solution 함수에서 그 값을 정수형 변수 n에 저장. for loop를 통해 문자열 n_str의 n위치부터 마지막까지 문자열 answer에 저장. 최종적으로 저장된 answer을 return
  • <다른 방법> substr() 함수를 사용하여 n을 시작인덱스로 설정하여 문자열까지 추출하여, answer에 저장하고 return

substr() 함수 사용법
1. substr(시작인덱스, 문자열 길이)
=> 시작인덱스 부터 주어진 문자열 길이만큼 추출
2. substr(시작인덱스)
=> 시작인덱스 부터 문자열 끝까지 추출


풀이

1)

#include <string>

using namespace std;

int find(string str) {
    for(int i = 0; i < str.size(); ++i) {
        if(str[i] != '0') return i;
    }
}

string solution(string n_str) {
    string answer = "";
    int n = find(n_str);
    
    for(int i = n; i < n_str.size(); ++i) {
        answer += n_str[i];
    }
    return answer;
}

2)

#include <string>

using namespace std;

int find(string str) {
    for(int i = 0; i < str.size(); ++i) {
        if(str[i] != '0') return i;
    }
}

string solution(string n_str) {
    int n = find(n_str);
    string answer = n_str.substr(n);
    
    return answer;
}
profile
Keep Recycling Your Dreams

0개의 댓글