데일리 codeup/문자열

문자열 순회하기_220714

hayo_su 2022. 7. 14. 15:23

문자열에서 문자 출력

문자열을 하나 입력받아 각각의 문자를 한 줄에 하나씩 순서대로 출력하는 프로그램을 작성해보세요.

#include <iostream>
#include <string>
using namespace std;
int main(){
    string arr;
    cin >> arr;
    for(int i=0;i<arr.length();i++) cout<<arr[i]<<endl;
    return 0;
}

문자열 범위 출력하기 2

문자열과 정수가 주어지면 문자열의 맨 뒤부터 주어진 개수만큼 출력하는 프로그램을 작성해보세요.

#include <iostream>
#include <string>
using namespace std;
int main(){
    string str;
    int n,len;
    cin >> str;
    cin >> n;
    len = str.length();
    for(int i=len-1;i>=((len-n)>0?(len-n):0);i--)   cout<<str[i];
    return 0;
}

정수만 더하기

숫자와 알파벳으로 이루어진 문자열 A가 주어졌을 때, 그 중 숫자들만 골라 그 합을 출력하는 프로그램을 작성해보세요.

#include <iostream>
#include <string>

using namespace std;
int main(){
    string arr;
    int sum = 0;
    cin >> arr;
    for(int i=0;i<arr.length();i++){
        if('0'< arr[i] && arr[i]<='9'){
            sum += arr[i]-'0';
        }
    }
    cout<<sum;
    return 0;
}

*문자열 내 문자 '0'~'9'는 숫자 0 ~ 9와 다르다. 문자열 ascii 값을 이용하여 연산하면 된다.


숫자 뒤집기

자연수가 입력으로 주어질 때 해당 자연수를 일의 자리부터 거꾸로 출력하는 코드를 작성해보세요. (ex : 1234→4321)
입력 자연수를 거꾸로 출력합니다. 단, 뒤집었을 때 앞이 0인 경우를 제외하고 출력합니다.

#include <iostream>
#include <string>
using namespace std;
int main(){
    string arr;
    cin >> arr;
    bool is_print =false;
    for(int i=arr.length()-1;i>=0;i--){
        if(arr[i] != '0')   is_print = true;
        if(is_print)    cout<<arr[i];
    }
    return 0;
}

Run Length 인코딩

문자열 A가 주어졌을 때 문자열 A에 Run-Length Encoding을 적용한 이후의 결과를 구해보려고 합니다. Run-Length Encoding이란 간단한 비손실 압축 방식으로, 연속해서 나온 문자와 연속해서 나온 개수로 나타내는 방식입니다.

예를 들어, 문자열 A가 aaabbbbcbb인 경우 순서대로 a가 3번, b가 4번, c가 1번 그리고 b가 2번 나왔으므로 Run-Length Encoding을 적용하게 되면 a3b4c1b2가 됩니다.

문자열 A가 주어졌을 때, Run-Length Encoding을 적용한 이후의 결과를 출력하는 프로그램을 작성해보세요.

#include <iostream>
#include <string>
using namespace std;
int main(){
    int cnt = 1;
    string arr,result;
    cin >> arr;
    char word = arr[0];
    for(int i=1;i<arr.length();i++){
        if(word == arr[i])  cnt++;
        else{
            result = result + word + to_string(cnt);
            word = arr[i];
            cnt = 1;
        }
    }
    result = result + word + to_string(cnt);
    cout<<result.length()<<endl<<result;
    return 0;
}

*숫자 cnt를 문자열로 바꾸기 위해서 to_string()을 이용하면 된다.


짝수 번째만 거꾸로 출력

문자열이 주어졌을 때, 주어진 문자열의 짝수 번째로 주어진 문자만을 고른 문자열을 역순으로(거꾸로) 출력하는 프로그램을 작성해보세요.

#include <iostream>
#include <string>
using namespace std;
int main(){
    string arr, result;
    cin >> arr;
    for(int i=1;i<arr.length();i+=2){
        result += arr[i];
    }
    for(int i=result.length()-1;i>=0;i--) cout<<result[i];
    return 0;
}