본문 바로가기
개발/Coding Test

[프로그래머스 C++ Lv1] 문자열을 정수로 바꾸기

by Eunduck 2022. 6. 6.
728x90

안녕하십니까. Eun🦆입니다.

풀이법 입니다.

 

 

코딩테스트 연습 - 문자열을 정수로 바꾸기

문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요. 제한 조건 s의 길이는 1 이상 5이하입니다. s의 맨앞에는 부호(+, -)가 올 수 있습니다. s는 부호와 숫자로만 이루어져있습니

programmers.co.kr

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <math.h>

int change(int n)
{
    int answer = 0;
    if(n == 48)
        answer = 0;
    else if(n == 49)
        answer = 1;
    else if(n == 50)
        answer = 2;
    else if(n == 51)
        answer = 3;
    else if(n == 52)
        answer = 4;
    else if(n == 53)
        answer = 5;
    else if(n == 54)
        answer = 6;
    else if(n == 55)
        answer = 7;
    else if(n == 56)
        answer = 8;
    else if(n == 57)
        answer = 9;
    
    return answer;
}

// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.

int solution(const char* s) {
    int answer = 0;
    int n = strlen(s);
    //printf("%d\n", n);
    //printf("%d\n", s[0]);
    //printf("%d, %d\n", '0', '9'); 48, 57
   
    if(s[0]!='-')
    {
        int j=0;
        for(int i=n-1;i>=0;i--)
        {
            //printf("s[i] = %d, j = %d\n", s[i], j);
            answer += change(s[i])*pow(10,j);
            //printf("change = %d, answer = %d\n", change(s[i]), answer);
            j++;
        }
    }else
    {
        int j=0;
        for(int i=n-1;i>=1;i--)
        {
            //printf("s[i] = %d, j = %d\n", s[i], j);
            answer += change(s[i])*pow(10,j);
            //printf("change = %d, answer = %d\n", change(s[i]), answer);
            j++;
        }
        answer *= -1;
    }
    
    printf("%d\n", answer);
    
    return answer;
}

 

네이버 블로그 리뉴얼입니다.

(https://blog.naver.com/unsuk1/221926797830)

728x90

댓글