| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- Kotlin LinkedList
- deque
- Kotlin자료구조
- 코틀린
- 큐
- 상태 호이스팅
- 리컴포지션
- 안드로이드
- Android
- Queue
- 스택
- State Hoisting
- Compoae
- 재정의함수
- kotlin
- 우송대학교
- LinkedList
- 우송대
- Class
- 개발 보드
- 아두이노
- 라즈베리파이 피코
- kotlinClass
- 컴포즈
- 추상화함수
- PICO4
- 자료구조
- 클래스
- List
- Stack
- Today
- Total
개발자의 생활
숫자의 합(11720) [Kotlin] 본문
https://www.acmicpc.net/problem/11720
문제
N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백 없이 주어진다.
출력
입력으로 주어진 숫자 N개의 합을 출력한다.

이 문제는 첫 번째 줄에 숫자의 개수가 입력된다고 했습니다. 만약 배열을 사용한다면 이 값을 사용해서 크기를 지정할 수 있습니다.
val reader = BufferedReader(InputStreamReader(System.`in`))
reader.readLine()
val strNum = reader.readLine()
하지만 Koltin을 사용하면 배열을 사용하지 않아도 됩니다. 그러니 첫 번째 줄은 그냥 넘기면 됩니다.
이다음 숫자를 문자열로 공백 없이 받는다고 했습니다. 이를 하나씩 잘라서 정수로 만들고 더하기만 하면 됩니다.
이는 다양한 방법이 존재합니다. 모든 방법을 다룰 순 없으니 몇 가지만 사용해 보겠습니다.
1. 반복문 for 사용하기
var arrNumberAdd = 0
for (num in strNum){
arrNumberAdd += num.digitToInt()
}
이렇게 문자열을 반복문으로 문자 단위로 가져올 수 있습니다. 그리고 가져오는 동시에 정수로 변경하면 됩니다.
여기서 문자를 정수로 변경하는 함수로 digitToInt()를 사용하였습니다. 이것 말고도 toInt()라는 함수도 존재합니다.
이름만 보면 두 개 다 정수로 변환하는 함수로 보이지만 큰 차이점이 있습니다.
digitToInt() 은 문자를 정수로 변경할 수 있는지 확인을 한 후 변환이 가능하면 정수로 변환 수 반환해 줍니다.
그리고 정수로 변환할 수 없는 문자라면 예외를 발생시킵니다.
추가로 digitToIntOrNull()이라는 함수도 존재합니다. 이는 동일한 역할을 하지만 정수로 변환을 못하는 값이라면 null을 반환합니다.
toInt()는 문자를 유니코드 형태로 반환을 해 줍니다.
이 문제에서는 문자열이 정수로만 나온다고 하였으니 digitToInt()을 사용하면 됩니다.
2. 컬렉션 함수, 집계함수 사용하기
var arrNumberAdd = 0
strNum.forEach {
arrNumberAdd += it.digitToInt()
}
val arrNumberAdd = strNum.map { it.digitToInt() }.sum()
여기서는 map {} 컬렉션 함수를 사용하여 문자열을 각각의 문자로 나눈 후 정수로 변환하여 List 형태로 만든 뒤 이를 sum() 집계함수로 모든 요소를 더하였습니다.
val arrNumberAdd = strNum.sumOf { it - '0' }
이 코드는 sumOf {}를 사용하였습니다. 이는 문자열을 문자로 변환한 후 문자 '0'을 뺀 모든 요소를 더하고 있습니다.
이 방법들 말고도 수많은 방법들이 있겠지만 여기서는 이 정도만 해보겠습니다.
감사합니다.
'코딩테스트 > 백준' 카테고리의 다른 글
| 평균(1546) [Kotlin] (0) | 2025.12.03 |
|---|