티스토리 뷰

반응형

 

 

 

 


백준 1110번, 더하기사이클 문제 설명

안녕하세요? 😎
오늘 swift언어로 풀어볼 문제는 백준의 1110번, 더하기사이클 문제입니다. solved.ac 랭크 기준, 브론즈1로 기초문제에 해당합니다.

 

 

 

 

입력값은 0보다 크거나 같고, 99보다 자거나 같은 정수가 들어옵니다. 구해야 하는 것은 더하기사이클인데요.

(타겟값의 뒷자리 수) 와 (입력받은 값 각자리수의 합의 뒷자리 수)를 붙이는 것을 반복했을때 이러한 연산을 몇번 수행해야 초기 숫자와 같은 숫자가 되는지를 구하는 문제입니다.

 

 

 

 

예제 입/출력을 보겠습니다. 26을 입력했을 때의 출력은 어떻게 해야할까요? 그 과정은 아래와 같습니다.


1) 26 -> 6 + (2 + 6 = 8)로 68이 됩니다.  count : 1
2) -> 8 + (6 + 8 = 14의 뒷자리 4)로 84가 됩니다. count : 2
3) -> (84의 뒷자리 4) + (8 + 4 = 12의 뒷자리 2)로 42가 됩니다. count : 3

4) -> (42의 뒷자리 2) + (4 + 2 = 6)으로 초기 숫자인 26과 동일하게 됩니다. count : 4

이렇게 더하기 사이클 출력값은 4가 됩니다. 

 

이제 이번 백준문제, 더하기사이클 문제를 swift언어로 while 반복문을 활용하여 풀어보겠습니다.

 

 

 

 


백준 1110번, 더하기사이클 swift while 반복문 활용 문제풀이

3행) 먼저 입력을 받아야겠죠? 0 <= N <= 99의 값이 입력될 겁니다. Int형으로 입력값을 받아줍니다. 입력은 숫자로 들어옴을 보장하므로 강제언래핑으로 빠르게 처리해서 받아주면 됩니다. 

 

4행) count는 더하기 사이클 수를 카운팅 할때 쓸 변수입니다.

 

 

 

 

6행) num은 더하기 사이클 연산을 할때 현재의 타겟 숫자를 넣어두는데 사용합니다. 26이 들어갔다면 26 -> 68 -> 84 ... 순으로 들어가겠죠?

 

7행) 더하기 사이클이 끝날때까지 무한 반복 수행을 합니다. while true는 무한 반복문 실행을 의미합니다. 이때 주의할 점은 내부에 적절한 break처리가 없으면 프로그램 종료가 되지 않는다는 것입니다. 이부분 주의하여야 합니다. 

 

8 ~ 15행) nextNum변수는 더하기 사이클로 만들어진 다음 숫자를 저장하는데 사용합니다. 이제 현재 타겟의 각자리 수 합을 nextNum에 임시로 넣어줍니다. 이후, count += 1로 더하기 사이클 수를 1회 증가시키고, leftNum(타겟 숫자의 가장 우측 숫자) + rightNum(각자리 수 합의 가장 우측 자리 수)를 nextNum에 넣어줍니다. 만약 연산된 nextNum이 초기값 N과 동일하다면 더하기싸이클은 종료됩니다. 만약 같지 않다면 위의 연산을 반복 수행합니다. 

 

 

 

 

30행) 이렇게 연산을 마치고, 더하기사이클이 종료되면 while true {} 블럭을 빠져나가고, 더하기사이클 카운팅 값을 출력하면 됩니다.

그 결과는 아래와 같습니다. 관련 질문이나 의견 환영합니다. 그럼 이만.

 

 

 

 

 

 

반응형
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함