문제 출처 : https://www.acmicpc.net/problem/16944
언어 : Kotlin
문제 설명 :
큐브러버는 문제가 안 풀릴때 게임을 만들면서 머리속으로 문제를 푸는 법을 생각한다. 드디어 게임이 완성되었고, 이 게임의 이름은 "리듬 테트리스"이다. "리듬 테트리스"는 리듬 게임과 테트리스를 동시에 하는 재미있는 게임이다. 문제에 여백이 부족해 게임을 할 수 있는 사이트의 링크는 생략한다.
리듬 테트리스를 하려면 먼저 회원 가입을 해야 한다. 유저는 이메일과 비밀번호를 입력해야 하고, 비밀번호는 아래 규칙을 지켜야 한다.
비밀번호는 알파벳 소문자, 대문자, 숫자, 특수문자로만 이루어져 있다.
비밀번호는 6글자 이상이어야 한다.
숫자는 하나 이상 포함되어야 한다.
알파벳 소문자는 하나 이상 포함되어야 한다.
알파벳 대문자는 하나 이상 포함되어야 한다.
특수 문자는 하나 이상 포함되어야 한다. 사용할 수 있는 특수 문자는 !@#$%^&*()-+이다.
구사과는 리듬 테트리스를 하기 위해 회원 가입을 하려고 한다. 문자열 S를 비밀번호로 사용하려고 하지만, 리듬 테트리스의 비밀번호 규칙을 지키지 않을 수도 있다.
문자열 S가 주어졌을 때, 리듬 테트리스의 비밀번호 규칙을 지키려면 S의 뒤에 추가해야 하는 글자의 최소 개수를 구해보자.
입력 :
첫째 줄에 문자열의 길이 N(1 ≤ N ≤ 100), 둘째 줄에 문자열 S가 주어진다. S는 알파벳 소문자, 대문자, 특수문자(!@#$%^&*()-+), 숫자로만 이루어져 있다.
출력 :
첫째 줄에 리듬 테트리스의 비밀번호 규칙을 지키기 위해 추가해야 하는 문자의 최소 개수를 출력한다.
제한 사항 :
- 시간 제한 : 2초
- 메모리 제한 : 512MB
입출력 예 :
입력 | 출력 |
7 Koosaga |
2 |
7 koosaga |
3 |
7 k@@saga |
2 |
7 K0@saga |
0 |
풀이 :
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val bw = BufferedWriter(OutputStreamWriter(System.out))
val n = readLine().toInt()
val s = readLine()
bw.write("${checkPassword(n, s)}")
bw.flush()
bw.close()
}
fun checkPassword(n: Int, s: String): Int {
var missingTypes = 0
val lowercaseRegex = "[a-z]".toRegex()
val uppercaseRegex = "[A-Z]".toRegex()
val digitRegex = "[0-9]".toRegex()
val specialCharRegex = "[!@#\$%^&*()\\-+]".toRegex()
if (!lowercaseRegex.containsMatchIn(s)) missingTypes++
if (!uppercaseRegex.containsMatchIn(s)) missingTypes++
if (!digitRegex.containsMatchIn(s)) missingTypes++
if (!specialCharRegex.containsMatchIn(s)) missingTypes++
val additionalCharForLength = if (n < 6) 6 - n else 0
return maxOf(missingTypes, additionalCharForLength)
}
'백준 > 문제' 카테고리의 다른 글
1622번: 공통 순열 (0) | 2024.08.28 |
---|---|
22950번: 이진수 나눗셈 (0) | 2024.08.27 |
4072번: Words (0) | 2024.08.26 |
31562번: 전주 듣고 노래 맞히기 (4) | 2024.08.26 |
30822번: UOSPC 세기 (0) | 2024.08.26 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!