[알고리즘] 문제풀이 연습

[프로그래머스] 문자열 다루기 기본 level 1

ddgoori 2019. 11. 3. 18:54
#include <iostream>
#include <vector>

using namespace std;

bool solution(string s) {
	
	bool answer = true;
	if (s.length() < 1 || s.length() > 8) {
		answer = false;
		return answer;
	}

	if (s.length() == 4 || s.length() == 6) { //길이가 4 혹은 6
		
		for (int i = 0; i < s.length(); i++) {
			if (!((int)s[i] - 48 >= 0 && (int)s[i] - 48 <= 9)) { //이게 아니라면 모든 경우 다 false임
				answer = false;
				return answer;
			}
		}
	}
	else {
		answer = false;
		return answer;
	}
	
	return answer;
}

int main() {

	string s = "a234";
	cout << solution(s) << endl;
}

 

 

좋은 풀이

 

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

bool solution(string s) {
    bool answer = true;

    for (int i = 0; i < s.size(); i++)
    {
        if (!isdigit(s[i]))
            answer = false;
    }

    return s.size() == 4 || s.size() == 6 ? answer : false;
}

 

‘조건’ ? ‘A’ : ‘B’
위와 같은 형태로 사용합니다.
조건이 참이면 A를 반환하고 조건이 거짓이면 B를 반환합니다.

 

int nResult = 0;

int A = 10, B = 20;

nResult = (A < B) ? A : B;

std::cout << nResult << std::endl;

nResult = (A > B) ? A : B;

std::cout << nResult << std::endl;

 

출력

10

20

C++ isdigit()

The isdigit() function in C++ checks if the given character is a digit or not.