본문 바로가기

알고리즘 · 코딩

[SWEA 1945] 간단한 소인수분해

SWEA 1945. 간단한 소인수분해

N=2a x 3b x 5c x 7d x 11e

N이 주어질 때 a, b, c, d, e 를 출력하라.

C++ 풀이 1차시도

 

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

int cal(int q, int div) {
	int answer{ 0 };
	while ((q % div) == 0) {
		q = q / div;
		answer++;
	}
	return answer;
}

int main() {
	int number{ 0 }, q;
	cin >> number;
	for (int i = 1; i <= number; i++) {
		cin >> q;
		cout << '#' << i << ' ' << cal(q,2) << ' ' << cal(q, 3) << ' ' << cal(q, 5) << ' ' << cal(q, 7) << ' ' << cal(q, 11) << endl;
	}
}

} }

실행 시간을 줄이자

 

C++ 풀이 2차시도

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

int main() {
	int number{ 0 }, q;
	int arr[5] = { 2, 3, 5, 7, 11 };
	int answer[5]{ 0 };

	cin >> number;

	for (int i = 1; i <= number; i++) {
		for (int j = 0; j < 5; j++)
			answer[j] = 0;
		for (int k = 0; k < 5; k++) {
			while ((q % arr[k]) == 0) {
				q /= arr[k];
				answer[k]++;
			}
		}
		cin >> q;
		cout << '#' << i << ' ' << answer[0] << ' ' << answer[1] << ' ' << answer[2] << ' ' << answer[3] << ' ' << answer[4] << endl;
	}
	return 0;
}

 

서버 에러로 시간 체크를 못했다. 내일 다시 돌려봐야겠다.

문제 주소

https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5Pl0Q6ANQDFAUq

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

 

반응형