반응형
https://www.acmicpc.net/problem/1110
1110번: 더하기 사이클
0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자. 26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 =
www.acmicpc.net
#C 숫자 각 자리수 분해. 이,일의 자리수 분해 - 백준 알고리즘 오답노트 1110
#1. 2자리 3자리 정도는 / 과 %을 이용해서 각 자리수를 구하자.
2자리 정수에서 각 자리수는 나눗셈과 %연산으로 수행한다.
하지만 더 큰 자리수 라면 string에서 문자열을 분리해 내자.
#CF.
string k = "hello";
cout<<k.substr(1,1)+k.substr(2,1);
//k[1] + k[2] // 안되
///1110
#include<iostream>
#include<string>
using namespace std;
int main(){
int n; cin>>n;
string firstnum = to_string(n);
if(firstnum.size() == 1){
string tmp ="0"; tmp+=firstnum; firstnum = tmp;
}
string now = firstnum;
int ans = 0;
while(true){
string next;
if(now.size() == 1){
string tmp ="0"; tmp+=now; now =tmp;
}
char first = now[0];
char second = now[1];
int sum = first -'0' + second - '0';
next = to_string(sum);
if(next.size() == 1){
string tmp ="0"; tmp+=next; next =tmp;
}
string result = now.substr(1,1) + next.substr(1,1);
//cout<<result<<" ";
ans++;
if(result == firstnum){break;}
now = result;
}
cout<<ans<<"\n";
}
//FB1.
//
//string k = "hello";
//cout<<k.substr(1,1)+k.substr(2,1);
//k[1] + k[2] // 안되
#include<iostream>
using namespace std;
int main(){
int cycle = 0;
int num; cin>>num;
int n1 = num / 10;
int n2 = num % 10;
while(n1*10 + n2 != num || cycle == 0){
int tmp = n1+n2;
n1 = n2;
n2 = tmp % 10;
cycle++;
}
cout<<cycle<<"\n";
}
//FB1.
/*
2자리 정수에서 각 자리수는 나눗셈과 %연산으로 수행한다.
*/
플라즈마 IT 블로그 - 코딩 공부 정리, IT 정보 공유
https://plasmacodeing.tistory.com/
조금이라도 도움이 되었다면 공감 및 댓글 주세요~~
반응형
'알고리즘 > 백준[BOJ] 오답노트' 카테고리의 다른 글
다이나믹 프로그래밍 오버플로어 - 백준 알고리즘 오답노트 1012 (0) | 2019.05.07 |
---|---|
배열 초기화 방법 fill vs memset - 백준 알고리즘 오답노트 1260 (0) | 2019.05.06 |
C++ int 오버플로어 예측 - 백준 알고리즘 오답노트 2004 (0) | 2019.05.06 |
알고리즘 문제풀이전에 할것. 자료구조 선택하기 - 백준 알고리즘 오답노트 1012 (0) | 2019.05.06 |
별 찍기 5 - 백준 알고리즘 오답노트 2442 (0) | 2019.05.06 |