티끌모아 태산

1357: 뒤집힌 덧셈 본문

백준 문제/문자열,누적합,구현

1357: 뒤집힌 덧셈

goldpig 2024. 3. 31. 17:04
728x90

https://www.acmicpc.net/problem/1357

 

1357번: 뒤집힌 덧셈

어떤 수 X가 주어졌을 때, X의 모든 자리수가 역순이 된 수를 얻을 수 있다. Rev(X)를 X의 모든 자리수를 역순으로 만드는 함수라고 하자. 예를 들어, X=123일 때, Rev(X) = 321이다. 그리고, X=100일 때, Rev(

www.acmicpc.net

설명

어떤 수 X가 주어졌을 때, X의 모든 자리수가 역순이 된 수를 얻을 수 있다. Rev(X)를 X의 모든 자리수를 역순으로 만드는 함수라고 하자. 예를 들어, X=123일 때, Rev(X) = 321이다. 그리고, X=100일 때, Rev(X) = 1이다.

두 양의 정수 X와 Y가 주어졌을 때, Rev(Rev(X) + Rev(Y))를 구하는 프로그램을 작성하시오

핵심 아이디어

정수를 문자열로 바꿔서 역순으로 바꾼 후 다시 정수로 바꾸는 로직을 짜면 된다.

코드 구현

처음에는 함수로 만들어서 코드를 구현했는데 더 간단한 풀이가 있었다.

# 풀이 1


x, y = map(int, input().split())
def Rev(x):
	new_x = list(str(x))
	new_x.reverse()

	y = "".join(new_x)
	new_y = int(y)
	return new_y

ans = Rev(Rev(x) + Rev(y))
print(ans)

# 풀이 2

# 처음부터 문자열로 입력
a, b = input().split()

# 뒤 집고 정수로 바꾼다.
a = int(a[::-1])
b = int(b[::-1])

# 다시 문자로 바꿔숴 뒤집고 정수로 바꾸기
ans = int(str(a+b)[::-1])
print(ans)

 

C++

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


int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);

	string a, b;
	// 1. string으로 입력 받는다.
	cin >> a >> b;

	// 2. reverse() 함수를 통해 뒤집는다.
	reverse(a.begin(), a.end());
	reverse(b.begin(), b.end());

	// 3. stoi() 함수를 통해 정수로 바꾼다.
	int x, y;

	x = stoi(a);
	y = stoi(b);

	int sum = 0;
	sum = x + y;

	string ans;

	ans = to_string(sum);
	// 다시 뒤집는다.
	reverse(ans.begin(), ans.end());

	// 다시 정수로 바꿔서 출력
	cout << stoi(ans);

	return 0;


}
728x90