10952
이 문제는 A와 B에 0 0을 입력받을 때까지 A+B를 출력하는 문제이다.
while이 있는 괄호 안에다가 a!=0&&b!=0을 넣으니까 아무리 해도 안되길래(0 0을 넣으면 바로 빠져나와야 하는데. 더하기를 출력하고 while문을 탈출한다는 점에서 틀린듯ㅅ)
그냥 a랑 b가 0이 되면 while문을 빠져나오는 방식으로 코드를 짜주었다.
10951
이 문제는 위에서 푼 10952번과 다르게 0이 나올때까지가 아닌 계속해서 a+b를 출력하는 문제이다.
처음에는 이렇게 c는 계속 바뀌지 않는 0일테니까 c가 0인동안 계속해서 a b를 입력받고 더하여 출력하는 과정을 반복하게 했다.
이렇게 하니까 시간초과가 뜨면서 실패하게 된다.
백준 문제에서 시간초과는 코드가 맘에 안들게 길때 내는 오류라고 한다.
2번 문제 소개에서
입력이 끝날때까지 A+B를 출력하는 문제 EOF에 대해 알아보세요
라고 적혀있는걸 발견하고 EOF가 뭔지 찾아봤다.
EOF는 End Of File의 줄임말로 파일 끝에 도달하면 특별한 값을 반환하도록 한다.
윈도우에서는 ctrl + z를 누르면 실행된다.
그러니까 EOF를 사용한다는 것은, 윈도우에서 컨트롤 z를 누를때까지 계속해서 실행될 것이라는 뜻!
그러니까 이 문제에서도 a랑 b를 입력받을 때 ctrl + z를 안누르는 동안 계속해서 a+b를 출력해라..
이런식으로 문제를 풀어주면 된다.
1110
이 문제는 원래 수로 돌아올때까지 연산을 반복하는 문제이다.
예를 들어 설명하는 게 훨씬 쉬움
ex) 26입력
2+6=8 -> 68
6+8=14 -> 84
8+4=12 -> 42
4+2=6 -> 26
다시 26으로 돌아왔다!
4번의 계산작업을 거쳤으니 4 출력
결과적으로 26을 입력하면 4가 출력되는 이런 알고리즘
다른 0~99의 수에 모두 적용이 가능해야 한다.
그래서 0~9의 수는 처음에 00 01 02 ... 09 이런식으로 적용될 수 있도록 해야한다.
변수 구성은 다음과 같이 했다.
a -> 입력받을 변수
N -> 한번 계산할 때마다 한번씩 카운팅 해줄 변수
temp -> 처음에 입력받은 a로 돌아가는지 계속 확인해주는 변수
x -> temp의 10의자리
y -> temp의 1의 자리
이 문제는 do while을 써서 풀어줬다.
계산을 다 끝내고 나서 temp가 a랑 같지 않으면 계속 진행되도록 했다.
x랑 y는 나누기 연산자와 나머지 연산자를 이용해주었다.
17줄에서 (x+y)%10은 x랑 y랑 더해서 10의자리가 넘어가는 경우를 대비해서 나머지 연산자를 이용했고
y*10은 이전 숫자의 1의자리가 이제는 10의자리로 바뀌기 때문에 10을 곱해주었다.