티스토리 뷰
#. Problem
* The copyright in this matter is in inflearn
#. Resolution Process
1. Read and understand problem
2. Redefine the problem + abstract
3. Create solution plan (select Algorithm, Data structure)
4. Prove the plan (check performance time and usage memory)
5. Carry out the plan
6. Look back on the plan and find a way to improve it
#. Solve
1. 문자열을 입력받고 입력받은 문자열이 끝날 때까지(개행문자 '\0'가 나올 때까지) 루프를 돌고,
ASCII 코드를 활용하여 숫자만 판별해준다.
그다음, 판별된 숫자를 최종추출숫자(?)로 만들어준다. 이 숫자를 만들기 위해 자리수를 밀어주어야 하므로,
이전에 발견된 숫자에 10을 곱하고 그다음 발견된 숫자를 더해준다.
2. 약수의 개수를 구하기 위해 최종추출숫자(?)만큼 루프를 돌며 나머지가 0이 되는 숫자의 개수를 count 해주자.
#. Code
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 | #include<stdio.h> using namespace std; int main(){ // freopen("input.txt", "rt", stdin); char a[100]; int res=0, cnt=0, i; scanf("%s", &a); for(i=0; a[i]!='\0'; i++){ if(a[i]>=48 && a[i]<=57){ res=res*10+(a[i]-48); } } printf("%d\n", res); for(i=1; i<=res; i++){ if(res%i==0) cnt++; } printf("%d\n", cnt); return 0; } | cs |
(12) 문자열은 개행문자 '\0'로 끝나므로 개행문자를 만날 때까지 반복해주면 된다.
(13~14) 입력받은 자료형은 char 형으로 저장되어있다. 그렇기때문에 char형 숫자를 int 형으로 저장하기 위해서는 48만큼(ASCII CODE 참고) 빼주어야 한다. 형변환보다는 ASCII CODE 를 활용한 방법이 더 효과적인듯하다.
#. Result
- Input --------------------------------------------------------
g0en2Ts8eSoft
------------------------------------------------------------------
- Output --------------------------------------------------------
28
6
------------------------------------------------------------------
'PS > Problem_Solving' 카테고리의 다른 글
[Inflearn] 올바른 괄호 (0) | 2020.04.20 |
---|---|
[Inflearn] 영어단어 복구 (0) | 2020.04.20 |
[BOJ] 17614번. 369 (0) | 2020.04.19 |
[BOJ] 1904번. 01타일 (0) | 2020.02.04 |
[BOJ] 1003번. 피보나치 함수.cpp (0) | 2020.02.04 |