Post

leetcode(리트코드)2월05일 challenge71-Simplify Path

leetcode February challenge05 - Simplify Path 문제입니다.

1. 문제

https://leetcode.com/problems/simplify-path/


2. Input , Output


3. 분류 및 난이도

Medium 난이도입니다.
2월05일자 챌린지 문제입니다.


4. 문제 해석

  • 주어진 규칙에 맞게 path를 바꿔 return해야합니다.
  • 영어에 약해서 처리하지 못할 예외가 많아질까봐 설명을 보고 공부했습니다.

5. code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class Solution {
public:
    string simplifyPath(string path) {
        //result는 결과
        //tmp는 부분 문자열을 담기위해
        string result, tmp;
        //tmp를 저장할 벡터
        vector<string> tmpvec;
        //문자열을 자를 수 있게 도와줍니다.
        stringstream str(path);
        // '/'을 기준으로 잘브니다.
        while(getline(str,tmp,'/'))
        {
            //.이나 공백이 들어올 경우 무시합니다.
            if(tmp =="." || tmp=="") continue;
            //".."이 들어올 경우 만약 tmp저장벡터에 무언가 있으면 빼버립니다.
            if(tmp==".." && !tmpvec.empty()) tmpvec.pop_back();
            //"..이 들어온게 아니라면 벡터에 넣습니다.
            else if(tmp!="..") tmpvec.push_back(tmp);
        }
        //벡터를 끄집어내면서 '/'를 붙여주면서 결과에 넣어줍니다.
        for(auto i : tmpvec)
        {
            result+= ("/" + i );
        }
        //만약 결과가 비어있다면 '/'를 출력합니다.
        if(result.empty())
        {
            result +='/';
        }
        return result;
    }
};

6. 결과 및 후기, 개선점

시간
솔루션을 보고 풀었기에 x

This post is licensed under CC BY 4.0 by the author.