Coding_Test_C++

BaekJoon 2635번: 수 이어가기(C++)

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

 

2635번: 수 이어가기

첫 번째 수가 주어진다. 이 수는 30,000 보다 같거나 작은 양의 정수이다.

www.acmicpc.net

풀이법

1) 실버 수준의 문제로 구현이 어렵지 않으며 brute force로 답을 찾으면 되는 문제이다.

2) 들어 오는 입력 값이 30000 이하의 양수이므로, 이보다 작은 값을을 for문을 통해서 반복시켰으며 음수가 나오는 경우 동적 배열에 새로운 값을 넣는 것을 중단 시켰다.

3) 이후 만들어진 배열의 크기와 현재 최대 사이즈를 비교하여, 만들어진 배열의 크기가 더 큰 경우, 최종 배열에 담고, 사이즈를 갱신시켰다.

#include <string>
#include <iostream>
#include <vector>
#include <algorithm>
#include <math.h>
#include <cstring>
using namespace std;

int n;
vector<int> vec;
int vecSize = 0;
int main()
{
	cin.tie(0);
	ios::sync_with_stdio(false);
	cin >> n;
	for (int i = 1; i <= n; i++)
	{
		vector<int> temp;
		temp.push_back(n);
		temp.push_back(i);
		int j = 0;
		while (true)
		{
			if (temp[j] - temp[j + 1] >= 0)
			{
				temp.push_back(temp[j] - temp[j + 1]);
				j++;
			}
			else
				break;
		}
		if (vecSize < temp.size())
		{
			vec = temp;//벡터란 값에 temp담음
			vecSize = temp.size();
		}
	}
	cout << vecSize << "\n";
	for (int i = 0; i < vec.size(); i++)
	{
		cout << vec[i] << " ";
	}

}

 

'Coding_Test_C++' 카테고리의 다른 글

BaekJoon 2628번: 종이 자르기  (0) 2021.08.15
BaekJoon 2615번: 오목(C++)  (0) 2021.08.14
BaekJoon 14500번: 테트로미노(C++)  (0) 2021.08.08
BaekJoon 5014번: 스타트 링크(C++)  (0) 2021.08.06
BaekJoon 2636번: 치즈(C++)  (0) 2021.08.05