[c/c++] 백준 17202 (Bronze 1)

은동·2023년 1월 31일
0

Baekjoon

목록 보기
13/49

🔨 문제

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

<요약>

이렇게 해서 궁합 알아보는 문제
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
문제 너무 귀엽다
하지만 내 코드는 귀엽지 않다.......


🔨 해결방법

나는 일단 짝수와 홀수를 구분해서 전체 번호를 배열에 저장했다. 그리고 얘네들을 하나하나 숫자로 변환해서 (stoi(string)) 다시 다른 배열에 저장했다. 하지만 굳이 짝홀 구분하고, 숫자로 변환할 필요가 없다. 다른 많은 사람들은 아스키 코드를 이용해서 풀었더라
이제 이 배열을 위의 사진처럼 더하고 다시 저장하고 다시 배열에 넣어주고 반복하여 최종적으로 두자리숫자만 남을 때까지 반복해줬다.
그리고 출력할 때 ㄹㅇ 궁합처럼 숫자를 만들어서 출력해줬다. 이것도 매우 의미 없는..


🔨 코드

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

int main() {
	cin.tie(NULL);
	cout.tie(NULL);
	ios::sync_with_stdio(false);
	
	string A, B;
	cin >> A >> B;
	string total_num[17];

	int j = 1, k = 1;
	int result = 0;

	for (int i = 0; i < 16; i++) {
		if (i == 0) total_num[i] = A[0];
		if (i == 1) total_num[i] = B[0];
		if (i >= 2) {
			if (i % 2 == 0) {
				total_num[i] = A[j];
				j++;
			}
			else if (i & 2 != 0) {
				total_num[i] = B[k];
				k++;
			}
		}		
	}
	int dp[16] = { 0 };
	for (int i = 0; i < 16; i++) {
		dp[i] = stoi(total_num[i]);
	}

	int dp_buffer[16] = { 0 };
	int size = sizeof(dp) / sizeof(*dp);
	while (1) {
		
		for (int i = 0; i < size-1 ; i++) {
			dp_buffer[i] = dp[i] + dp[i+1];
			if (dp_buffer[i] >= 10) dp_buffer[i] = dp_buffer[i] % 10;
			dp[i] = dp_buffer[i];
			
		}size--;

		if (size == 2) {
			result = (dp[0] * 10) + dp[1];	// 이 부분은 굳이 필요 없을 듯;
			if (result < 10) {	
				cout << 0 << result;
				return 0;
			}
			else cout << result;
			return 0;
		}
		else continue;
	}
	
	return 0;
}

나보다 복잡하게 푼 사람 있으면 나와봐😂


그리고 누군가의 코드인데 따라 쳐보고 맘에 들어서 가져왔다
내 코드가 너무 꼴보기 싫어진다

	string str1, str2;
	vector<char> v;
	cin >> str1 >> str2;
	for (int i = 0; i < str1.size(); i++) {
		v.push_back(str1[i]);
		v.push_back(str2[i]);
	}

	while (v.size() > 2) {
		for (int i = 0; i < v.size() - 1; i++) {
			v[i] = (((v[i] - '0') + (v[i + 1] - '0')) % 10)+'0';
		}
		v.pop_back();	
		// 마지막에 넣은 값 제거
		// 예를 들어 1,2,3의 경우 위의 방식대로 더하면 3,5,3이 되는데 맨 뒤는 필요 없으니까 pop_back()한 것
	}
	cout << v[0] << v[1];

✔️ 다이나믹 프로그래밍(동적 계획법)

https://namu.wiki/w/%EB%8F%99%EC%A0%81%20%EA%B3%84%ED%9A%8D%EB%B2%95

한 번 계산했던 부분을 반복적으로 계산해야 하는 경우가 있다면 사용할 수 있는 알고리즘

profile
자자 선수입장~

0개의 댓글