📝24.01.15
🔗 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12925?language=csharp
문제 설명
문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.
제한 조건
- s의 길이는 1 이상 5이하입니다.
- s의 맨앞에는 부호(+, -)가 올 수 있습니다.
- s는 부호와 숫자로만 이루어져있습니다.
- s는 "0"으로 시작하지 않습니다.
public class Solution {
public int solution(string s) {
int answer = 0;
if(s[0] == '+') {
string splitStr = s.Substring(1);
answer = int.Parse(splitStr);
} else if(s[0] == '-') {
string splitStr = s.Substring(1);
answer = int.Parse(splitStr);
answer *= -1;
} else {
answer = int.Parse(s);
}
return answer;
}
}
제한 조건을 읽고, 맨 앞의 부호를 해결하는 게 관건인 문제라고 생각했다.
하지만 아니었다. Parse는 부호마저 처리해준다는 것을 알게되었다.
매우 간단한 문제였다.
public class Solution {
public int solution(string s)
{
int answer = int.Parse(s);
return answer;
}
}
그래서 위의 풀이를 보고 C++은 stoi면 해결이 될 것 같아 확인해보았고, 예상대로 적용되었다.
#include <string>
#include <vector>
using namespace std;
int solution(string s) {
int answer = stoi(s);
return answer;
}
sstream을 이용한 풀이도 있었다. 물론 이 문제에는 가장 적합한 풀이는 아니라고 생각한다.
#include <string>
#include <vector>
#include <sstream>
using namespace std;
int solution(string s) {
int answer = 0;
stringstream ss;
ss.str(s);
ss >> answer;
return answer;
}