티스토리 뷰
반응형
백준 문제 A+B를 기준으로 실험하였다.
https://www.acmicpc.net/problem/1000
우선 이건 성공했다.
정모형이 홍랩에 있는 코드는 올리지말라고 해서 힌트 안 보고 나혼자 한 코드를 우선 올리겠다.
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
void Substraction(char*A,char*B)
{
}
void Addiction(char*A,char*B)
{
char Sum_arr[10002];
int A_start=(int)strlen(A)-1;
int B_start=(int)strlen(B)-1;
int start=0,temp=0,cal=0;
int end=max(A_start,B_start);
while((A_start>=0 || B_start>=0) && start<=end)
{
if(B_start<0)
{
cal=(A[A_start]-'0'+temp);
A_start--;
}
else if(A_start<0)
{
cal=(B[B_start]-'0'+temp);
B_start--;
}
else
{
cal=(A[A_start]-'0')+(B[B_start]-'0')+temp;
B_start--;
A_start--;
}
if(cal>=10)
temp=1;
else
temp=0;
Sum_arr[start]=cal%10+'0';
start++;
}
if(temp==1)
{
Sum_arr[start]=temp+'0';
start++;
}
for(int i=start-1;i>=0;i--)
{
cout<<Sum_arr[i];
}
cout<<endl;
}
int main(void)
{
char A[10001];
char B[10001];
cin>>A>>B;
Addiction(A, B);
return 0;
}
우선 나는 세 개의 포인터를 만들었다.
A문자열
| 1 | 2 | 3 | 4 | \0 |
| A_start |
B문자열
| 2 | 3 | 4 | \0 | |
| B_start |
- 숫자를 더하려면
- 맨 끝에서부터 더하기 때문에 각 마지막에서 더할 때마다
- 각각 A_start,B_start를 --한다. 그러면 한칸씩 이동하면서 가리키는 자릿수가 바뀌게 된다.
- 이 값을 sum_arr에 더해간다.
Sum_arr
| 4+4 | ||||
| start |
- 값을 뒤에서부터 채우기란 매우 힘들기에 앞에서부터 값을 채우고 출력을 뒤에서부터 하기로 한다.
- 값을 채우면 start를 전진하여 앞에 값을 채운다.
올림수가 있는 경우
| 9+5=14 | ||||
| start |
- 이 경우에는 %10을 하여 4는 현재 start가 가리키는 자리에 저장한다.
- 그리고 무조건 올림수는 1이기 때문에 start를 전진하여 1을 앞에 저장한다.
| 4 | 1 | |||
| start |
만약 모든 값이 다 찼다고 하고 예를 들어 그 값이 3214라면,
| 4 | 1 | 2 | 3 | |
| start |
이 값을 거꾸로 출력한다.
for(int i=start-1;i>=0;i--)
{
cout<<Sum_arr[i];
}
cout<<endl;
그러면 우선 덧셈을 완성이다.
https://www.acmicpc.net/problem/15740
이 문제를 사실 풀고 싶었는데, 이건 뺄셈도 구현해야 한다.
뺼셈도 구현해서 이 문제를 풀어봐야겠다.
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 백준
- 알고리즘기초
- 코딩 테스트
- 객체지향
- HTML
- 코딩테스트
- 그리디알고리즘
- 프로그래밍
- 그래프 탐색
- 동적계획법
- 프로그래머스
- 문제 풀이
- 브루트포스
- 코딩
- 문제풀이
- 알고리즘
- dfs
- 파이썬
- C++
- 문자열처리
- Python
- c언어
- 알고리즘 문제풀이
- DP
- 그리디
- 알고리즘문제풀이
- python 알고리즘
- 상속
- 동적 계획법
- 파이썬코딩
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
글 보관함
반응형