[ Codility ] - Lesson4 PermCheck(C++)

DPOS·2021년 8월 24일
1

Codility

목록 보기
10/11
post-thumbnail

문제조건

  • 값이 정의된 벡터 A

문제설명

  저번에 이어 나왔던 문제 조금씩 바꿔서 나오는 것 같네요. 이 문제 같은 경우에는 수열인 벡터의 정의 된 수들이 수열을 이루면 1을 반환하고, 그렇지 않으면 0을 반환하면 되는 문제입니다.

문제풀이

#include <algorithm>					// max_elemet 함수 사용을 위한 헤더

int solution(vector<int> &A)
{
    int M = *max_element(A.begin(), A.end());		// 벡터 A의 최대값
    int S1 = A.size(), S2;				// 벡터 A의 사이즈와 사이즈 변수 하나 더 선언
    int R;						// 반환값 저장

    sort(A.begin(), A.end());
    A.erase(unique(A.begin(), A.end()), A.end()); 	// 중복 제거 과정

    S2 = A.size();					// 중복값이 제거 된 이후 벡터 A의 사이즈

    res = ( S1 == M && S1 == S2 ) ? 1 : 0;
    return res;
}

코드설명

  • 변수 선언
    • 벡터의 최대값을 M에 저장, 벡터의 크기를 S1에 저장
    • 벡터에 있는 중복값을 제거, 제거 후 벡터의 크기를 S2에 저장
    • 삼항 연산 이후 반환 값을 받을 R변수 선언
  • 조건문을 통해 0 혹은 1을 반환하며 프로그램 종료
    • 벡터의 원래 사이즈와 최대값을 비교해서 요소의 수로 순열 조건확인
    • [ 3, 1, 3, 4 ]와 같은 상황 방지를 위해 S1과 S2의 비교를 추가적으로 진행

결과사진

profile
본인 전공빼고 다 하는 사람

0개의 댓글