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

 

2331번: 반복수열

첫째 줄에 반복되는 부분을 제외했을 때, 수열에 남게 되는 수들의 개수를 출력한다.

www.acmicpc.net

확실히 실버난이도는 쉽네여

#include <iostream>
#include <vector>
#include <algorithm>
#include<string>
#include<queue>
#include<map>
#include<stack>
#include<bitset>
#include<cmath>
using namespace std;

void Prints(vector<vector<char>>maps, int r, int c) {
	for (int i = 0; i < r; i++) {
		for (int j = 0; j < c; j++) {
			cout << maps[i][j];
		}
		cout << endl;
	}
	cout << endl;
}
void Prints(vector<vector<bool>>maps, int r, int c) {
	for (int i = 0; i < r; i++) {
		for (int j = 0; j < c; j++) {
			cout << maps[i][j];
		}
		cout << endl;
	}
	cout << endl;
}
void Prints(vector<vector<int>>maps, int r, int c) {
	for (int i = 0; i < r; i++) {
		for (int j = 0; j < c; j++) {
			cout << maps[i][j];
		}
		cout << endl;
	}
	cout << endl;
}
struct Point {
	int s;
	int e;
	int cnt;
};
struct Data {
	int index;
	int cnt;

};

int main() {
	string A;
	cin >> A;
	int P;
	cin >> P;
	vector<string>stack;
	queue<string>D;
	D.push(A);
	stack.push_back(A);
	int count = 0;
	bool bCheck = false;
	while (!D.empty()) {
		string start = D.front();
		D.pop();
		
		if (bCheck == true) {
			break;
		}
		string ans = "";
		int id = 0;
		for (int i = 0; i < start.size(); i++) {

			double tmp =pow(start[i] - '0', P);
			id += static_cast<int>(tmp);

		}
		ans = to_string(id);
		int cnt = 0;
		for (int i = 0; i < stack.size(); i++) {
			
			
			if (ans == stack[i]) {
				
				cout << cnt;
				bCheck = true;
			}
			cnt++;
			
		}
		D.push(ans);
		if (bCheck == false) {
			stack.push_back(ans);
		}
		
		
	}
	


	return 0;
}

'알고리즘 공부' 카테고리의 다른 글

백준 바이러스  (0) 2023.07.15
백준 외판원 순회 2  (0) 2023.07.15
백준 순열 사이클  (0) 2023.07.13
백준 촌수계산  (0) 2023.07.13
백준 Puyo Puyo  (0) 2023.07.13

+ Recent posts