일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- bronze4
- toLong()
- naver open api
- RecyclerView
- stack
- silver4
- gradle설정
- 임시저장하기
- LV1
- LIS
- Android
- 다크모드제한
- 테마변경
- dp
- 녹음기
- silver3
- map
- RETROFIT
- Silver5
- recyclerView 클릭이벤트
- fragment에서 context사용
- bottom-up
- 백준
- bronze3
- 프로그래머스
- bronze2
- Kotlin
- Alert Dialog
- 뷰클래스
- Top-Down
Archives
- Today
- Total
유니 코드
[BOJ/백준][Bronze II] 10820: 문자열 분석 (Kotlin) 본문
https://www.acmicpc.net/problem/10820
10820번: 문자열 분석
문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오. 각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있
www.acmicpc.net
문제
문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오.
각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있다.
입력
첫째 줄부터 N번째 줄까지 문자열이 주어진다. (1 ≤ N ≤ 100) 문자열의 길이는 100을 넘지 않는다.
출력
첫째 줄부터 N번째 줄까지 각각의 문자열에 대해서 소문자, 대문자, 숫자, 공백의 개수를 공백으로 구분해 출력한다.
예제 입력1
This is String
SPACE 1 SPACE
S a M p L e I n P u T
0L1A2S3T4L5I6N7E8
예제 출력1
10 2 0 2
0 10 1 8
5 6 0 16
0 8 9 0
풀이
import java.util.*
import kotlin.math.*
fun main(){
while(true){
val input = readLine() ?: return
val result = IntArray(4,{0})
input.forEach{ it ->
when(it){
in 'a'..'z' -> result[0]++
in 'A'..'Z' -> result[1]++
in '0'..'9' -> result[2]++
' ' -> result[3]++
}
}
for(i in 0..3){
print(result[i].toString() + " ")
}
println()
}
}
한 줄씩 입력받아서 forEach를 사용하여 문자 하나씩 세고, 0으로 초기화한 배열을 증가시켰다.
대문자, 소문자, 공백, 숫자를 구분하는 것은 아스키 코드를 이용하였다.
forEach안에 조건문을 사용했는데 when 문을 이용하니까 좀 더 깔끔해졌다.
'알고리즘 > 미분류' 카테고리의 다른 글
[PGS/프로그래머스][Lv1] 정렬 : K번째수(Kotlin) (0) | 2022.05.08 |
---|---|
[PGS/프로그래머스][Lv1] 콜라츠추측(Kotlin) (0) | 2022.05.08 |
[BOJ/백준][Bronze II] 2577: 숫자의 개수 (Kotlin) (0) | 2022.02.25 |
[BOJ/백준][Bronze III] 1085: 직사각형에서 탈출 (Kotlin) (0) | 2022.02.24 |
Comments