티스토리 뷰
백준 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 {} 블럭을 빠져나가고, 더하기사이클 카운팅 값을 출력하면 됩니다.
그 결과는 아래와 같습니다. 관련 질문이나 의견 환영합니다. 그럼 이만.
'알고리즘 정보 > Swift 알고리즘' 카테고리의 다른 글
swift언어 배열 stack 활용, 백준 10828 스택 문제풀이 (0) | 2021.01.26 |
---|---|
백준 재귀함수 기초문제, 10872 팩토리얼 swift 문제풀이 (0) | 2021.01.25 |
swift 반복문 기초 for/forEach, 백준 구구단 출력 문제풀이 (0) | 2021.01.18 |
swift if 조건문/삼항연산자 활용, 두 수 비교하기 문제풀이 (0) | 2021.01.17 |
swift 입문, 백준 We love kriii print 출력 문제풀이 (2) | 2021.01.14 |
- Total
- Today
- Yesterday
- SwiftUI
- 알고리즘문제
- swift reduce
- 프로그래머스swift
- 컬렉션
- 프로그래머스
- createML
- swift문제
- CoreML
- Swift 알고리즘
- ios
- 자연어처리
- swift언어
- 김프매매
- swift알고리즘
- 부스트코스
- 백준알고리즘
- swift string
- swift
- 프로토콜
- 알고리즘
- Collection
- Protocol
- swift 기초
- publisher
- uikit
- 개발자문서
- 스위프트
- 백준swift
- swift 문자열
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |