-
반응형
https://www.acmicpc.net/problem/4096
-풀이-
먼저 팰린드로미터를 확인해주는 함수 isRight를 선언해주었다. ( 시간복잡도 O(N) )
bool isRight(string str){ for(int i=0;i<str.size()/2;i++){ if(str[i]!=str[str.size()-1-i]){ return false; } } return true; }
1. str을 입력받은뒤, cnt를 0으로 초기화해준다.
2. str을 isRight로 체크한 뒤, 팰린드로미터이면 cnt를 출력한다.
3. str이 팰린드로미터가 아니라면, str을 int형으로 바꾼 뒤, 1을 증가시키고, 다시 string형태로 바꾸어준다. 이때 string형태로 바꾸면서, 원래 길이와 똑같을때까지 앞에 "0" 을 붙여주어야한다. cnt값도 1 증가시켜준다.
4. 팰린드로미터가 될때까지 3번을 반복해준다.
#include <algorithm> #include<iostream> #include<string> using namespace std; bool isRight(string str){ for(int i=0;i<str.size()/2;i++){ if(str[i]!=str[str.size()-1-i]){ return false; } } return true; } int stringToInt(string str){ return stoi(str); } string intToString(string str,int n){ string temp=to_string(n); while(temp.size()<str.size()){ temp="0"+temp; } return temp; } int main(){ cin.tie(NULL); cout.tie(NULL); ios_base::sync_with_stdio(false); while(true){ string str; cin>>str; if(str=="0") break; int cnt=0; while(!isRight(str)){ cnt++; int temp=stringToInt(str); temp++; str=intToString(str,temp); } cout<<cnt<<"\n"; } }
반응형'문제풀이 > 백준oj' 카테고리의 다른 글
[백준OJ] 14921번 용액 합성하기 (0) 2021.07.21 [백준OJ] 10844번 쉬운 계단 수 (0) 2021.07.21 [백준OJ] 13424번 비밀 모임 (0) 2021.07.20 [백준OJ] 2696번 중앙값 구하기 (0) 2021.07.20 [백준OJ] 1240번 노드사이의 거리 (0) 2021.07.20 댓글