N

(SWEA c++)1215. [S/W 문제해결 기본] 3일차 - 회문1 본문

SW Expert Academy

(SWEA c++)1215. [S/W 문제해결 기본] 3일차 - 회문1

naeunchan 2020. 10. 8. 10:29
728x90
반응형

swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14QpAaAAwCFAYi&categoryId=AV14QpAaAAwCFAYi&categoryType=CODE

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

test case는 10번으로 고정 반복.

8 x 8로 고정된 크기로 string을 입력받아 vector에 저장한다.

size는 회문의 크기를 나타내고,

size == 1이면 모든 단어가 회문이므로 64를 출력한다.

 

size가 1이 아니라면 가로, 세로를 검사해야 한다.

8 x 8이라 시간은 충분하므로 가로, 세로를 각각 for문을 돌려 체크를 해주면 된다.

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main(void)
{
    for(int i = 1; i <= 10; i++)
    {
    	int size, ans = 0;
        vector<string> v;
    
    	cin >> size;
        
        for(int j = 0; j < 8; j++)
        {
            string s;
            cin >> s;
            v.push_back(s);
        }
        
        if(size == 1)
            cout << "#" << i << " " << 64 << endl;
        else
        {
            for(int j = 0; j < 8; j++)
            {
            	for(int k = 0; k <= 8 - size; k++)
                {
                    bool rowKeep = true;
                
                    for(int l = 0; l < size / 2; l++)
                    {
                        if(v[j][k + l] != v[j][k + size - l - 1])
                            rowKeep = false;
                    }
                    if(rowKeep)
                        ans++;
                }
            }
            
            for(int j = 0; j <= 8 - size; j++)
            { 
                for(int k = 0; k < 8; k++)
                {
                    bool colKeep = true;
               
                    for(int l = 0; l < size / 2; l++)
                    {
                        if(v[j + l][k] != v[j + size - l - 1][k])
                            colKeep = false;
                    }
                    if(colKeep)
                        ans++;
                }
            }
        }
        cout << "#" << i << " " << ans << endl;
    }
    return 0;
}
    
728x90
반응형