일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 삼성전자
- agcu컵
- 알고리즘 특강
- certi
- 전국 대학생 프로그래밍 대회 동아리 연합
- 삼성전자 코딩테스트
- 2023
- 코드트리
- 인하대학교
- 사내자격증
- 2017
- 선린고등학교
- 구름톤 챌린지
- 알고리즘특강
- PRO
- B형
- 코딩테스트실력진단
- newbie programming contest
- 프로그래밍 경시대회
- 파이썬
- ICPC
- 서울대학교
- 알고리즘
- 백준
- 파일 생성 불가
- 구현
- Python
- 코딩테스트
- 코딩트리조별과제
- iucpc
Archives
- Today
- Total
니노니나니
[SWEA 1215] 회문1 - C++ 본문
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
문제
"기러기", "토마토", "스위스"와 같이 똑바로 읽어도 거꾸로 읽어도 똑같은 문장이나 낱말을 회문(回文, palindrome)이라 한다.
8x8 평면 글자판에서 제시된 길이를 가진 회문의 개수를 구하라.
위와 같은 글자판이 주어졌을 때, 길이가 5인 회문은 붉은색 테두리로 표시된 4개이므로 4를 반환하면 된다.
입력
총 10개의 테스트 케이스가 주어진다.
각 테스트 케이스의 첫 번째 줄에는 찾아야 하는 회문의 길이가 주어지며, 다음 줄에 8x8 크기의 글자판이 주어진다.
풀이
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main(int argc, char** argv)
{
int test_case;
int T;
//freopen("input.txt", "r", stdin);
for (test_case = 1; test_case <= 10; ++test_case)
{
int length, count = 0;
vector<string> data;
cin >> length;
for (int i = 0; i < 8; i++)
{
string line;
cin >> line;
data.push_back(line);
}
if (length == 1)
{
cout << "#" << test_case << " " << 64 << endl;
}
else
{
//가로 체크
for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 8 - length + 1; j++)
{
bool ispalindrome = true;
for (int k = 0; k < length/2; k++)
{
if (data[i][j + k] != data[i][j + length - k - 1])
{
ispalindrome = false;
}
}
if (ispalindrome) count += 1;
}
}
//세로 체크
for (int i = 0; i < 8 - length + 1; i++)
{
for (int j = 0; j < 8; j++)
{
bool ispalindrome = true;
for (int k = 0; k < length / 2; k++)
{
if (data[i+k][j] != data[i + length - k - 1][j])
{
ispalindrome = false;
}
}
if (ispalindrome) count += 1;
}
}
cout << "#" << test_case << " " << count << endl;
}
}
return 0;//정상종료시 반드시 0을 리턴해야합니다.
}
해결방법
정형적인 회문 문제입니다. 다만, 빠르게 회문을 찾을 수있도록 길이의 절반을 기준으로 회문 여부를 확인하면 되는 문제입니다.
'알고리즘 > 삼성 Certi' 카테고리의 다른 글
[SWEA 1265] 달란트2 - C++ (0) | 2025.02.25 |
---|---|
[SWEA 1221] GNS - C++ (0) | 2025.02.25 |
[SWEA 1213] String - C++ (0) | 2025.02.25 |
[SWEA 1220] Magnetic - C++ (0) | 2025.02.24 |
[SWEA 1245] 균형점 - C++ (0) | 2025.02.24 |