Lv. 1 🌱
https://school.programmers.co.kr/learn/courses/30/lessons/12925
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.
제한 조건
- s의 길이는 1 이상 5이하입니다.
- s의 맨앞에는 부호(+, -)가 올 수 있습니다.
- s는 부호와 숫자로만 이루어져있습니다.
- s는 "0"으로 시작하지 않습니다.
입출력 예
예를들어 str이 "1234"이면 1234를 반환하고, "-1234"이면 -1234를 반환하면 됩니다.
str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다.
해결방법
string을 돌면서 처음엔 부호체크를 해주고, 답은 왼쪽으로 밀면서 더해주면 된다.
'0' 을 빼주는 이유는, 예를 들어 char '1' 은 ascii코드로 49 인데 여기서 char '0' 의 ascii코드 48 을 빼주면 정수 1을 더하는 효과가 나타나기 때문이다.
(42서울에서 atoi하던 기억이 새록새록난다...)
코드
#include <iostream>
using namespace std;
int solution(string s) {
int answer = 0;
int minus = 1;
for (int i = 0; i < s.length(); i++)
{
if (i == 0 && (s[i] == '+' || s[i] == '-'))
{
if (s[i] == '-')
minus = -1;
continue;
}
answer = answer * 10 + s[i] - '0';
}
if (minus < 0)
answer *= -1;
return answer;
}
'컴퓨터과학 > 알고리즘' 카테고리의 다른 글
[알고리즘] 백준 1620 - 나는야 포켓몬 마스터 이다솜 (0) | 2023.01.20 |
---|---|
[알고리즘] 백준 10814 - 나이순 정렬 (0) | 2023.01.19 |
[알고리즘] 백준 11650 - 좌표 정렬하기 (0) | 2023.01.18 |
[알고리즘] 백준 11478 - 서로 다른 부분 문자열의 개수 (0) | 2023.01.18 |
[알고리즘] 프로그래머스 - 정수 내림차순으로 배치하기 (0) | 2023.01.18 |