기본 콘텐츠로 건너뛰기

라벨이 Algorithm Solution인 게시물 표시

1012 : 유기농 배추 [C++]

# include < iostream > # include < vector > # define IOFAST ( ) ios_base : : sync_with_stdio ( false ) ; cin . tie ( NULL ) ; cout . tie ( NULL ) ; using namespace std ; class Cabbage { private : vector < vector < int > > Farm ; int Count ; public : Cabbage ( int M , int N , int K ) ; void DFS ( int row , int col , bool flag ) ; void GetCount ( ) ; } ; Cabbage :: Cabbage ( int M , int N , int K ) { Count = 0 ; for ( int i = 0 ; i < N ; i + + ) { vector < int > Temp ; for ( int j = 0 ; j < M ; j + + ) Temp . push_back ( 0 ) ; Farm . push_back ( Temp ) ; } for ( int i = 0 ; i < K ; i + + ) { int m , n ; cin > > m > > n ; Farm [ n ] [ m ] = 1 ; } } void Cabbage :: DFS ( int row , int col , bool flag ) { if ( Farm [ row ] [ col ] = = 1 ) { Farm [ row ] [ col ] = 0 ; if ( flag ) { Count + + ; ...

1992 : 쿼드트리 (Divide and Conquer) [C++]

# include < iostream > # include < string > using namespace std ; class QuadTree { private : int * * Image ; int N ; public : QuadTree ( int n ) ; int First_Search ( int size ) ; void Divide ( int size , int row , int col ) ; } ; QuadTree :: QuadTree ( int n ) { this - > N = n ; Image = new int * [ n ] ; for ( int i = 0 ; i < n ; i + + ) { Image [ i ] = new int [ n ] ; string Input = " " ; getline ( cin , Input ) ; for ( int j = 0 ; j < n ; j + + ) Image [ i ] [ j ] = int ( Input [ j ] ) - 48 ; } } int QuadTree :: First_Search ( int size ) { bool IsOne = true ; for ( int i = 0 ; i < size ; i + + ) { for ( int j = 0 ; j < size ; j + + ) { if ( Image [ 0 ] [ 0 ] ! = Image [ i ] [ j ] ) IsOne = false ; } } if ( IsOne ) { cout < < Image [ 0 ] [ 0 ] ; return 1 ; } else return 0 ; } voi...

10828 : 스택 [Python]

Stack = [ ] def push ( num ) : Stack . append ( int ( num ) ) def pop ( ) : if len ( Stack ) > 0 : print ( Stack . pop ( ) ) else : print ( - 1 ) def size ( ) : print ( len ( Stack ) ) def empty ( ) : if len ( Stack ) == 0 : print ( 1 ) else : print ( 0 ) def top ( ) : if len ( Stack ) > 0 : print ( Stack [ len ( Stack ) - 1 ] ) else : print ( - 1 ) TestCase = int ( input ( ) ) while TestCase > 0 : Command = input ( ) if Command == 'top' : top ( ) elif Command == 'pop' : pop ( ) elif Command == 'empty' : empty ( ) elif Command == 'size' : size ( ) else : push ( Command [ 5 : ] ) TestCase - = 1

10809 : 알파벳 찾기 [C++]

# include < iostream > # include < string > using namespace std ; int main ( ) { cin . tie ( NULL ) ; string Input ; getline ( cin , Input ) ; int Count [ 26 ] = { 0 , } ; bool Visited [ 26 ] = { false , } ; Count [ Input [ 0 ] - 97 ] = - 1 ; Visited [ Input [ 0 ] - 97 ] = true ; for ( int i = 1 ; i < Input . size ( ) ; i + + ) { if ( Visited [ Input [ i ] - 97 ] ) continue ; else { Visited [ Input [ i ] - 97 ] = true ; Count [ Input [ i ] - 97 ] = i ; } } for ( int i = 0 ; i < 26 ; i + + ) { if ( Count [ i ] = = 0 ) cout < < " -1 " ; else if ( Count [ i ] = = - 1 ) cout < < " 0 " ; else cout < < Count [ i ] < < " " ; } return 0 ; }

1978 : 소수 찾기 [C++]

# include < iostream > # include < vector > using namespace std ; int main ( ) { cin . tie ( NULL ) ; vector < int > Primes ; Primes . push_back ( 2 ) ; Primes . push_back ( 3 ) ; for ( int i = 4 ; i < 1000 ; i + + ) { bool IsPrime = true ; if ( i % 2 = = 0 | | i % 3 = = 0 ) continue ; for ( int j = 4 ; j < i ; j + + ) { if ( i % j = = 0 ) { IsPrime = false ; break ; } } if ( IsPrime ) Primes . push_back ( i ) ; } int N , Count = 0 ; cin > > N ; for ( int i = 0 ; i < N ; i + + ) { int Input ; cin > > Input ; for ( int j = 0 ; j < Primes . size ( ) ; j + + ) if ( Input = = Primes [ j ] ) Count + + ; } cout < < Count < < " \n " ; return 0 ; }

2581 : 소수 [C++]

# include < iostream > # include < vector > using namespace std ; int main ( ) { cin . tie ( NULL ) ; int M , N ; cin > > M > > N ; vector < int > Primes ; int Sum = 0 ; for ( int i = M ; i < = N ; i + + ) { bool Flag = false ; if ( i = = 2 | | i = = 3 ) { Primes . push_back ( i ) ; continue ; } if ( i % 2 = = 0 | | i % 3 = = 0 | | i = = 1 ) continue ; for ( int j = 3 ; j < i ; j + + ) { if ( i % j = = 0 ) { Flag = true ; break ; } } if ( ! Flag ) Primes . push_back ( i ) ; } for ( int i = 0 ; i < Primes . size ( ) ; i + + ) Sum + = Primes [ i ] ; if ( Primes . size ( ) = = 0 ) cout < < - 1 < < " \n " ; else cout < < Sum < < " \n " < < Primes [ 0 ] < < " \n " ; return 0 ; }

9020 : 골드바흐의 추측 [C++]

// 소수를 구하고 골드바흐 // 나누기 2로부터 소수인지 #include <vector> #include <iostream> using namespace std; vector<int> Primes; void GetPrime(); int main() {    cin.tie(NULL);    int TestCase;    cin >> TestCase;    GetPrime();    while (TestCase--)    {       int N;       cin >> N;       int Down = (N / 2);       int Up = (N / 2);       bool Got = false;       for (int k = 0; k < (N / 2) - 1; k++)       {          for (int i = 0; i < Primes.size(); i++)          {             if (Down == Primes[i])             {                for (int j = 0; j < Primes.size(); j++)               ...

10989 - 수 정렬하기3 (Radix Sort) [C++]

기수 정렬로 풀어보라해서 기수 정렬로 풀었는데.. 메모리 초과가 계속 떠서 알아봤더니  기수 정렬로는 못 풀고 카운팅 정렬로만 풀 수 있다고 한다. 카운팅 정렬로 풀어봐야겠다. # include < iostream > # include < vector > using namespace std ; class Radix { private : vector < int > A , B , C , D , E ; vector < vector < int > > Bucket ; int N ; public : Radix ( int n ) ; void Input ( ) ; void Sort ( ) ; void Print ( ) ; } ; int main ( ) { cin . tie ( NULL ) ; int N ; cin > > N ; Radix R ( N ) ; R . Input ( ) ; R . Sort ( ) ; R . Print ( ) ; } Radix :: Radix ( int n ) { this - > N = n ; for ( int i = 0 ; i < 10 ; i + + ) { vector < int > Temp ; Temp . push_back ( i ) ; Bucket . push_back ( Temp ) ; } } void Radix :: Input ( ) { for ( int i = 0 ; i < this - > N ; i + + ) { int input ; cin > > input ; if ( input < 10 ) this - > A . push_back ( input ) ; else if ( in...