void IsStraightOrFlush(std::vector<Card> & cHand,bool & straight,bool & flush)

{

    straight=flush=false;

    std::vector<int> UniqueOfcHand; // Straight를 위해 중복되는 숫자를 없애서 저장하기 위한 벡터  

    std::vector<int> SuitOfcHand; // flush 확인을 위한 것

    

 CheckMade(cHand,UniqueOfcHand); //UniqueOfcHand에서 정렬시킨뒤 중복되는 숫자 없애기 위한 함수 ex) 패에 (3,4,4,2,7,6,4) 일 경우 ->(2,3,4,4,4,6,7) -> (2,3,4,6,7)로 변환

    CheckMadeSuit(cHand,SuitOfcHand); //숫자가 아닌 모양을 기준으로 정렬하는 함수 (클로버=1,다이아=2,스페이드=3,하트=4 임)  ex) (D,D,C,S,C,H,C) 일경우 -> (C,C,C,D,D,S,H)로 변환 

    

 for(int i=0;i<3;i++) //straight확인 

    {

        if(UniqueOfcHand[i]==(UniqueOfcHand[i+1]-1)==

           (UniqueOfcHand[i+2]-2)==(UniqueOfcHand[i+3]-3)==

           (UniqueOfcHand[i+4]-4))

        {

            straight=true;

        }

    }

    for(int i=0;i<3;i++) //flush확인

    {

        if(SuitOfcHand[i]==(SuitOfcHand[i+1]-1)==

           (SuitOfcHand[i+2]-2)==(SuitOfcHand[i+3]-3)==

           (SuitOfcHand[i+4]-4))

        {

            flush=true;

        }

    }

    if((UniqueOfcHand[0]==Num::Two)&& //Ace,2,3,4,5 확인 

       (UniqueOfcHand[1]==Num::Three)&&

       (UniqueOfcHand[2]==Num::Four)&&

       (UniqueOfcHand[3]==Num::Five)&&

       ((UniqueOfcHand[4]==Num::Ace)||(UniqueOfcHand[5]==Num::Ace)||(UniqueOfcHand[6]==Num::Ace)))

    {

        straight=true;

    }

}


로직파트 다짯는데 제일 엉성한 부분이라 질문..


위에 있는 내 코드는 Card클래스 안에 suit랑 Num으로 구성된 숫자멤버들이 있는데 솔까 for문 너무 많이 돌리는 것같아서 코드가 토나오는데 좀더 효율적으로 점검하는법 없을까?


git에 있는 코드들은 다 Draw카드만 비교하고 나중에 머지시키드라 그리고 Card가 클래스가 아니고 구조체라서 참고만 하고 다시 짜는데...


좀 병신 같은거 알지만 조언좀 재귀쓰려고 했는데 코드보는데 짱구 굴려야 되서 if로 조짐..