Showing

[알고리즘] 더하기 알고리즘 본문

컴퓨터 공학, 전산학/알고리즘

[알고리즘] 더하기 알고리즘

RabbitCode 2024. 2. 21. 16:31

https://youtu.be/yROZqvmQjRQ?feature=shared

 

const string result = Add(str1, str2); 에 대한 Add 함수를 아래와 같이 작성해보았다.

 

(1) 입력값이 str1과 str2를 뒤집어준다.

(2) 두 입력값 중에서 더 큰 사이즈를 for문의 범위로 설정한다.

(3) 자리수마다 덧셈하고 덧셈의 값이 10을 넘으면 1을 다음 자리로 넘긴다. 10으로 나눈 나머지는 계속 answer에 축적

(4) (3)을 반복하면서 모든 자리수를 다 연산하면 answer을 뒤집는다.

(5) 연산 결과 

 

algorithm 라이브러리의 reverse를 이용해서 문자열을 뒤집었다.

파이썬에 길들여져서 int로 string을 변환하니 아스키코드값이 나와 -48을 적용하였다.

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

string Add(string str1, string str2)
{
	reverse(str1.begin(), str1.end());
	reverse(str2.begin(), str2.end());
	int maxLength = max(str1.size(), str2.size());
	string answer = "";
	int posNum = 0;
	for (int i = 0; i < maxLength; i++) {
		if (i < str1.size()) {
			posNum += int(str1[i]-48);
		}
		if (i < str2.size()) {
			posNum += int(str2[i]-48);
		}
		answer += to_string(posNum % 10);
		if (posNum >= 10) {
			posNum = 1;
		}
		else {
			posNum = 0;
		}
	}
	if (posNum!=0) {
		answer += to_string(posNum);
	}
	reverse(answer.begin(), answer.end());
	return answer;
}

 

그런데 char, str, int 형변환을 찾아보니 아래와 같이 정리할 수 있었다.

int → 문자열(char[])

 

int idec = 123456789; string temp = to_string(idec);

char[] → int

char cChar[10] = "123456789"; int result = stoi(cChar);
 

char → int

 
 
char Cchar = '1'; int result = Cchar - '0';
 

int to char

int로 변환 방법의 반대로 -'0' 했던 것을 +'0'

 int idec = 1; char result = idec + '0'