250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 백준#BOJ#14501#퇴사#브루트포스
- 백준#BOJ#12865#평범한배낭
- 백준#BOJ#2615#오목
- 백준#boj#12755
- 백준#boj#16932#모양만들기
- 백준#BOJ#8012#한동이는영업사원
- 백준#BOJ#1939#중량제한
Archives
- Today
- Total
순간을 성실히, 화려함보단 꾸준함을
[boj : 1254] 팰린드롬 만들기 본문
문제 : 팰린드롬 만들기까지 문자열 뒤에 몇개를 붙여 만들 수 있는가?
해설 : 팰린드롬 진짜 너무 싫네요 ㅠㅠㅠ 한번 꼬이면 반례가 안보여.....ㅠㅠ
먼저 필자는 팰린드롬이 무조건 '홀수'여야 된다고 잘못 생각했음.(멍청한 자식)
짝수도 되죠,,,,
맨 마지막 문자를 기준으로 모든 경우의 수를 확인해 보는 방식으로 풀었습니다.
1 - 0(L)번 인덱스와 맨 마지막 문자(R)
2 - 1번 인덱스와 맨 마지막 문자
3 - 2번 인덱스와 맨 마지막 문자
.
.
.
같다면 L과 R을 한칸씩 좁혀주고 전부 같으면 시작점(L)과 끝점(R)은 팰린드롬이라는 뜻이므로, 추가할 문자(L 값)을 더해주면 되겠죠.
#include<bits/stdc++.h>
using namespace std;
int solve(string& s, int x);
int main()
{
string s;
cin >> s;
int ans = (int)1e9;
for (int i = 0; i < s.length(); i++)
if (solve(s, i)) {
ans = i;
break;
}
cout << ans + s.length();
return 0;
}
int solve(string& s, int x)
{
int l = x;
int r = s.length() - 1;
while (l < r)
{
if (s[l] != s[r])return false;
l++;
r--;
}
return true;
}
'알고리즘,SQL > 백준,BOJ' 카테고리의 다른 글
[ boj : 20056] 마법사 상어와 파이어볼 (0) | 2021.01.05 |
---|---|
[ boj : 2168] 문자판 (0) | 2021.01.05 |
[boj : 15971] 두 로봇 (0) | 2021.01.02 |
[boj : 16569] 화산쇄설류 (0) | 2021.01.02 |
[boj : 15922] 아우으 우아으이야!! (0) | 2020.12.24 |