[프로그래머스 Level 2, C++] 소수 찾기

2022. 8. 9. 17:37·이전 게시글/공부 관련

문제 : 소수 찾기


풀이 방법

조합과 순열을 적절히 섞어야하며 자릿수도 신경 써야하므로 for문 안에 do while (next_permutation)을 넣었다.

프로그래머스 소수 찾기 11번 케이스만 오답이 나서 뭔가 했는데 numbers를 sort하지 않아서 오류가 났던 것이다.

경우의 수를 전부 체크하고 나면 01과 1은 같은 숫자로 치므로 0도 제거 한 다음, 중복되는 숫자를 제거해서 소수를 체크하면 끝이다


소스 코드

#include <string>
#include <vector>
#include <algorithm>
using namespace std;

bool isPrime(int& i)
{
    for(int u = 2; u <= i; u++) {
        if(i % u == 0 && i == u) {
            return true;
        } 
        else if(i % u == 0 && i != u){
            return false;
        }
    }
}

int solution(string numbers) {
    int answer = 0;
    vector<string> vecNumbers;
    
    // numbers를 오름차순으로 정렬 next_permutation은 정렬되어 있어야함
    sort(numbers.begin(), numbers.end());
    
    // 자릿수 별로 조합
    for(int i=1; i<=numbers.length(); i++) {
        do {
            string tmp = "";
            
            for(int u=0; u<i; u++) {
                tmp.push_back(numbers[u]);
            }
            
            // 011의 0은 필요없으니 맨 앞의 0 제거
            while(tmp.front() == '0') tmp.erase(tmp.begin());
            if(!tmp.empty()) vecNumbers.push_back(tmp);
            
        } while (next_permutation(numbers.begin(), numbers.end()));
    }
    
    // 중복되는 숫자 제거
    sort(vecNumbers.begin(), vecNumbers.end());
    vecNumbers.erase(unique(vecNumbers.begin(), vecNumbers.end()), vecNumbers.end());
    
    // 소수 개수 체크
    for(string s : vecNumbers) {
        int i = stoi(s);
        if(isPrime(i) == true) answer++;
    }
    
    return answer;
}

 

저작자표시 (새창열림)

'이전 게시글 > 공부 관련' 카테고리의 다른 글

[안드로이드 스튜디오, Java] R.string 자바 코드에서 불러오는법, context.getString(R.string.name), valueOf, toString  (0) 2022.08.15
[프로그래머스 Level 1, C] 수박수박수박수박수박수?  (0) 2022.08.10
[프로그래머스 Level 1, Java] 평균 구하기  (0) 2022.08.04
[프로그래머스 Level 1, Java] 정수 제곱근 판별  (0) 2022.08.04
[안드로이드, Java] 리사이클뷰 아이템 마진 적용하기, RecyclerView Item Margin  (0) 2022.08.03
'이전 게시글/공부 관련' 카테고리의 다른 글
  • [안드로이드 스튜디오, Java] R.string 자바 코드에서 불러오는법, context.getString(R.string.name), valueOf, toString
  • [프로그래머스 Level 1, C] 수박수박수박수박수박수?
  • [프로그래머스 Level 1, Java] 평균 구하기
  • [프로그래머스 Level 1, Java] 정수 제곱근 판별
aptenia
aptenia
공부하면서 배운 것들
  • aptenia
    새벽의 아이디어
    aptenia
  • 전체
    오늘
    어제
    • 분류 전체보기 (276)
      • f1tenth (2)
      • 이전 게시글 (268)
        • 개발 관련 (25)
        • 정보 관련 (19)
        • 공부 관련 (224)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 네이버 블로그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    공개SW개발자대회
    마크
    티스토리스킨편집
    c언어초보
    콜라츠추측
    마인크래프트강화스크립트
    마인크래프트스크립트
    이것이자바다
    파이썬
    마크스크립트
    자바
    이것이자바다연습문제
    티스토리반응형2스킨편집
    이것이자바다확인문제
    안드로이드
    스크롤바CSS
    반복하지않는수
    티스토리HTML
    백준
    프로그래머스
    C언어
    프로그래머스PCCE
    마인크래프트
    파이어베이스
    컨텍스트스위칭
    캡스톤디자인
    C++강좌
    빅데이터공모전
    C언어강좌
    일본규슈공업대학교
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
aptenia
[프로그래머스 Level 2, C++] 소수 찾기
상단으로

티스토리툴바