[C_C++]코딩테스트 연습/[프로그래머스] level 1

[C++] 프로그래머스 - 소수 만들기

코딩굼벵이 2021. 7. 13. 19:07
728x90

 

 

 

내 풀이

(실수로 cout을 안 지웠는데 잘 채점이 됐다..!)

for문이 엄청 많은데ㅎㅎ... 어차피 함수로 뽑아도 for문 쓰면 실질적으로 돌아가는 for문은 똑같을 것 같아서 그냥 한방에 해결했다.

소수 판별은 2부터 자기자신 직전까지 포문으로 나눠봐서 나눠지는게 있으면 break해서 나가고, 안 나눠져서 끝까지 갔으면 answer++로 값을 올려줬다.

 

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

int solution(vector<int> nums) {
	int answer = 0;

	for (int i = 0; i < nums.size() - 2; i++) {
		for (int j = i + 1; j < nums.size() - 1; j++) {
			for (int k = j + 1; k < nums.size(); k++) {
				int sum = nums[i] + nums[j] + nums[k];
				for (int m = 2; m < sum; m++) {
					//나눠지는 수가 있으면 -> 소수가 아니면
					if (sum % m == 0) break;
					else { 
						if (m == sum - 1) {
							cout << nums[i] << nums[j] << nums[k] << endl;
							answer++;
						}
					}
				}
			}
		}
	}

	cout << answer << endl;

	return answer;
}