알고리즘 코드카타

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

 

프로그래머스

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

programmers.co.kr

 

단순히 생각한 코드

더보기
#include <string>
#include <vector>
#include <math.h>
using namespace std;

int solution(string s) {
    int answer = 0;

    string result = "";
    for(int i = 0; i< s.length(); ++i){
        if(!isalpha(s[i]))
        {
            result += s[i];
            continue;
        }

        switch(s[i])
        {
            case 'z':
                result += "0";
                i += 3;
                break;
            case 'o':
                result += "1";
                i += 2;
                break;
            case 't':
                if(s[i+1] == 'w'){
                    result += "2";
                    i += 2;
                }
                else {
                    result += "3";
                    i += 4;
                }
                break;
            case 'f':
                if(s[i+1] == 'o')
                    result += "4";
                else 
                    result += "5";
                i += 3;
                break;
            case 's':
                if(s[i+1] == 'i'){
                    result += "6";
                    i += 2;
                }
                else {
                    result += "7";
                    i += 4;
                }
                break;
            case 'e':
                result += "8";
                i += 4;
                break;
            case 'n':
                result += "9";
                i += 3;
                break;
        }
    }

    int cnt = 0;
    for(int i =result.length() - 1; i>= 0; --i){
        answer += (result[i] -'0') * pow(10, cnt);
        ++cnt;
    }

    return answer;
}

더 좋은 코드를 짤 수 없나 찾아보다가

regex로 구현하신 분을 봤다.

#include <string>
#include <regex>
using namespace std;

int solution(string s) {
    s = regex_replace(s, regex("zero"), "0");
    s = regex_replace(s, regex("one"), "1");
    s = regex_replace(s, regex("two"), "2");
    s = regex_replace(s, regex("three"), "3");
    s = regex_replace(s, regex("four"), "4");
    s = regex_replace(s, regex("five"), "5");
    s = regex_replace(s, regex("six"), "6");
    s = regex_replace(s, regex("seven"), "7");
    s = regex_replace(s, regex("eight"), "8");
    s = regex_replace(s, regex("nine"), "9");

    return stoi(s);
}

 

문자열.replace(시작위치, 길이, 치환할 문자열);

regex_replace(문자열, regex(정규식), 치환할 문자열);

 

이렇게 짜면 실행했을 때 시간이 좀 더 걸리긴 하지만 가독성은 훨씬 좋아진다.

알고보면 간단한 문제..!

 

 

발표 후 프로젝트 피드백

완성도 - 기능 개발 하려고 했던 부분이 많이 보였다.

아스키도 신경 많이 썼다.

상점 선택 인덱스 - 인덱스가 선택과 상점이 다르다.

qa 를 한 번 돌려봐라 - 버그 있는거 잡아내라

객체지향적으로도 잘 구현했고  기능적으로도 좋다

사용자 관점에서 생각해보고 구현하는 것을 추천한다.

 

 

오늘 하루 회고

발표를 끝으로 진짜 콘솔 게임 프로젝트가 끝났다 !!

후련 아쉽..

 

프로젝트 하나가 끝난 기념인지 7시부터 밍글맵에서 게임하면서 놀았다.

아쉽게도 치킨이랑 커피는 못받았다..