본문 바로가기

알고리즘/[프로그래머스]Lv.0

[프로그래머스]Lv 0. 문자열 정렬하기 (1)

본 페이지는 C++ 독학을 위해 작성한 포스트입니다 풀이과정도 포함되어있지만 문법공부에 대한 비중이 있습니다.
(+  Java언어 내용도 포함되어있을 수 있습니다. )

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/120850?language=cpp 

 

프로그래머스

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

programmers.co.kr

 

 

 

1.문제설명

문제 설명
문자열 my_string이 매개변수로 주어질 때, my_string 안에 있는 숫자만 골라 오름차순 정렬한 리스트를 return 하도록 solution 함수를 작성해보세요.

제한사항
1 ≤ my_string의 길이 ≤ 100my_string에는 숫자가 한 개 이상 포함되어 있습니다.my_string은 영어 소문자 또는 0부터 9까지의 숫자로 이루어져 있습니다. - - -

 

2. 문제해결 접근

  • 반복문으로 my_string의 요소를 모두 검사한다.
  • 조건문으로 ( 값이 숫자일 때 ) answer에 값을 추가한다
  • 아스키 코드 변환하여 검사한다,
  • 값이 숫자일때 검사하는 함수 isdigit()
  • 요소는 문자열 형태, 반환하는 vector<int> answer;는 정수형

3. C++ 답안

#include <string>
#include <vector>
#include <algorithm>


using namespace std;

vector<int> solution(string my_string) {
    vector<int> answer;
    for(int i=0;i<my_string.size();i++){
    	// my_string[i]가 정수인지 확인한다.
        if(isdigit(my_string[i]))
        	//answer에 요소를 추가한다(int로 변환하여 ( my_string의 i인덱스부터 + 1개 인덱스까지 ))
            answer.push_back(stoi(my_string.substr(i,1)));
    }
    // 오름차순으로 정렬한다
    sort(answer.begin(),answer.end());
    return answer;
}

 

4. C++ 문법 설명과 표현법

isdigit()

인수로 들어온  char 타입이 10진수 숫자로 변경이 가능하면 0이 아닌 숫자( true ), 아니면 0 
(false)를 반환하는 함수

확인할문자열.isdigit(확인할 문자열[index]);

 

https://blockdmask.tistory.com/362

 

[C언어/C++] isdigit (숫자를 판단하는 함수)

안녕하십니다. BlockDMask 입니다. 오늘은 C언어 및 C++에서 문자를 다룰때 이걸 숫자인지 판단해야하는 경우가 있지 않았나요? 그럴때 사용하라고 C/C++에서 이미 만들어 놓은 함수가 있습니다. 바로

blockdmask.tistory.com

 

 

stoi()

string to int 

다시말해 string을 int형으로 사용할 때 사용하는 메서드로 

stoi( 변환할문자열 변수 );
stoi( 변환할문자열 변수, 다음에 올 값, 표현할 진수 );

 

 

https://blockdmask.tistory.com/333

 

[C++] stoi, stof, stol, stod 함수에 대해서 (string to int)

안녕하세요. BlockDMask 입니다. 지난시간에는 C/C++에 기존에 존재하던 atoi, atof, atol등 char* 타입의 문자열을 정수로, 실수로 (=숫자로) 변경하는 함수에 대해서 살펴 보았습니다. 오늘은! C++11에서 부

blockdmask.tistory.com

https://codingdog.tistory.com/entry/c-stoi-%ED%95%A8%EC%88%98-string-to-int%EB%A5%BC-%ED%95%A0-%EB%95%8C-%EB%A7%8E%EC%9D%B4-%EC%9D%B4%EC%9A%A9%ED%95%9C%EB%8B%A4

 

c++ stoi 함수 : string to int를 할 때 많이 이용한다.

string을 int로 바꿀 수 없을까요? c_str로 raw pointer를 리턴받고, atoi에 raw_pointer를 넘겨주면 됩니다. 사실 저는 stoi를 알기 전까지 이렇게 했습니다. 예제 프로그램을 보도록 하겠습니다. 저는 string "1

codingdog.tistory.com

 

substr()

문자열의 일부를 추출할때 사용하는 메서드

추출할 문자열 변수.substr(추출할 시작인덱스, 추출할 마지막 인덱스);
				//기본값( pos = 0, len = npos )

인수를 지정하지 않으면, 문자열 전체를 저장된 기본값 pos = 0 , len = npos에 따라 문자열 전체를 추출하게 된다.

 

 

https://psychoria.tistory.com/773

 

C++ string (문자열)의 부분 문자열 추출 (substr)

C++ 문자열을 다루다 보면 문자열의 일부를 추출해야 하는 상황이 있습니다. 예를 들어, 파일의 확장자 부분만 추출하고 싶을 때 부분 문자열 추출이 필요합니다. C++ string 클래스는 부분 문자열

psychoria.tistory.com