본문 바로가기
IT/BOJ

백준(BOJ) 2870 수학숙제 *

by 빨강자몽 2019. 3. 17.

# 파싱


파싱은 정말 문제 잘 안 읽어서 실수하는 경우도 많고.


이 부분을 실수 했다.

while(tmp.front()=='0') -> while(!tmp.empty()&&tmp.front()=='0')

#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <math.h>
#include <limits.h>
#include <string.h>
#include <string>
#include <sstream>
#define MAX 105
#define INF 2123456789

using namespace std;
typedef long long ll;

int n;
char str[205];
vector<vector<char>> v;

int main() {
    scanf("%d",&n);

    for(int i=0;i<n;i++)
    {
        scanf("%s", str);
        queue<char> tmp;
        for(int j=0;j<strlen(str);j++)
        {
            // 0~9 사이의 값인 경우
            if('0'<=str[j]&&str[j]<='9')
                tmp.push(str[j]);

            // 0~9 사이의 값이아니거나 마지막이고 큐의 원소가 한개이상인 경우
            if((!('0'<=str[j]&&str[j]<='9')||j==(strlen(str)-1))&&tmp.size()!=0)
            {
                // 앞에 나온 0을 모두 제거하여준다.
                while(!tmp.empty()&&tmp.front()=='0')
                    tmp.pop();
                
                vector<char> vv;
                while(!tmp.empty()) {
                    vv.push_back(tmp.front());
                    tmp.pop();
                }
                // 0인 경우
                if(vv.size()==0)
                    vv.push_back('0');
                v.push_back(vv);
            }
        }
    }

    // 문자열 비교한다.
    sort(v.begin(),v.end());
    // 문자열 길이순으로 출력해준다.
    for(int k=1;k<=100;k++)
    {
        for(int i=0;i<v.size();i++)
        {
            if(v[i].size()==k) {
                for (int j = 0; j < v[i].size(); j++)
                    printf("%c", v[i][j]);
                printf("\n");
            }
        }
    }

    return 0;
}


'IT > BOJ' 카테고리의 다른 글

백준(BOJ) 13458 로봇 청소기 **  (0) 2019.03.20
백준(BOJ) 13458 시험 감독 *  (0) 2019.03.18
백준(BOJ) 2667 단지번호붙이기 *  (0) 2019.03.14
백준(BOJ) 2665 미로만들기 *  (0) 2019.03.13
백준(BOJ) 16189 Repetitive Palindrome *  (0) 2018.10.07