신규 블로그를 만들었습니다!
해당 문제는 직접 풀어보고 채점까지 마친 뒤, 작성한 글입니다.
문제풀이는 아래쪽에 있으니, 풀이를 보고싶은 분은 아래쪽을 확인하시면 됩니다.
문제 출처
https://www.acmicpc.net/problem/15904
문제
UCPC는 '전국 대학생 프로그래밍 대회 동아리 연합 여름 대회'의 줄임말로 알려져있다. 하지만 이 줄임말이 정확히 어떻게 구성되었는지는 아무도 모른다. UCPC 2018을 준비하던 ntopia는 여러 사람들에게 UCPC가 정확히 무엇의 줄임말인지 물어보았지만, 아무도 정확한 답을 제시해주지 못했다. ntopia가 들은 몇 가지 답을 아래에 적어보았다.
- Union of Computer Programming Contest club contest
- Union of Computer Programming contest Club contest
- Union of Computer Programming contest club Contest
- Union of Collegiate Programming Contest club contest
- Union of Collegiate Programming contest Club contest
- Union of Collegiate Programming contest club Contest
- University Computer Programming Contest
- University Computer Programming Club contest
- University Computer Programming club Contest
- University Collegiate Programming Contest
- University CPC
- ...
ntopia는 이렇게 다양한 답을 듣고는 UCPC가 무엇의 약자인지는 아무도 모른다고 결론내렸다. 적당히 슥삭해서 UCPC를 남길 수 있으면 모두 UCPC의 약자인 것이다!
문자열이 주어지면 이 문자열을 적절히 축약해서 "UCPC"로 만들 수 있는지 확인하는 프로그램을 만들어보자.
축약이라는 것은 문자열에서 임의의 문자들을 제거하는 행동을 뜻한다. 예를 들면, "apple"에서 a와 e를 지워 "ppl"로 만들 수 있고, "University Computer Programming Contest"에서 공백과 소문자를 모두 지워 "UCPC"로 만들 수 있다.
문자열을 비교할 때는 대소문자를 구분해 정확히 비교한다. 예를 들어 "UCPC"와 "UCpC"는 다른 문자열이다. 따라서 "University Computer programming Contest"를 "UCPC"로 축약할 수 있는 방법은 없다.
그나저나 UCPC는 정말 무엇의 약자였을까? 정확히 아시는 분은 제보 부탁드립니다.
입출력
입력
첫 번째 줄에 알파벳 대소문자, 공백으로 구성된 문자열이 주어진다. 문자열의 길이는 최대 1,000자이다. 문자열의 맨 앞과 맨 끝에 공백이 있는 경우는 없고, 공백이 연속해서 2번 이상 주어지는 경우도 없다.
출력
첫 번째 줄에 입력으로 주어진 문자열을 적절히 축약해 "UCPC"로 만들 수 있으면 "I love UCPC
"를 출력하고, 만들 수 없으면 "I hate UCPC
"를 출력한다.
예제
예제입력
Union of Computer Programming Contest club contest
예제출력
I love UCPC
예제입력2
University Computer Programming
예제출력2
I hate UCPC
문제풀이
해당 문제는 for when을 이용하면 쉽게 풀 수 있습니다. when은 java에서 switch문과 같다고 생각하면 됩니다.
import java.io.BufferedReader
import java.io.InputStreamReader
fun main(args: Array<String>){
val br = BufferedReader(InputStreamReader(System.`in`))
val input = br.readLine()
var i = 0
for (c in input) when(i){
0 -> if (c == 'U') i++
1, 3 -> if (c == 'C') i++
2 -> if (c == 'P') i++
}
println("I ${if (i == 4) "love" else "hate"} UCPC")
}
10번째 줄 : i가 0일때, 'U'를 비교합니다. 같다면 i를 증가시킵니다.
11번째 줄 : i가 1일때나 3일때, 'C'와 비교합니다. 같다면 i를 증가시킵니다.
12번째 줄 : i가 2일때는 'P'와 비교를 합니다. 같다면, i를 증가시킵니다.
15번째 줄 : UCPC를 모두 찾았으면, i는 4가 될 것입니다. 그렇기 때문에, 4일때는 "love"를 출력하고, 4가 아닌경우는 UCPC를 못찾은 경우이기 때문에 "hate"를 출력합니다.
직접 풀어보고 작성한 글이기 때문에, 결과는 "정답"으로 나옵니다.
문제에 대한 틀린점이나 궁금한점이 있다면 댓글로 적어주세요!
그리고 좀 더 효율적으로 풀 수 있는 방법이 있으면 알려주세요~
다른 문제
2019/02/05 - [Algorithm/백준 온라인 저지] - 백준 10172번 개, 코틀린으로 풀어보기
2019/02/06 - [Algorithm/백준 온라인 저지] - 백준 11022번 A+b - 8, 코틀린으로 풀기
2019/02/07 - [Algorithm/백준 온라인 저지] - 백준 2438번 별찍기, 코틀린으로 풀기
'Algorithm > 백준 온라인 저지' 카테고리의 다른 글
백준 7785번 - 회사에 있는 사람 (Python3) (0) | 2019.08.04 |
---|---|
백준 1475번 - 방 번호 (Python3) (0) | 2019.08.04 |
백준 2438번 별찍기, 코틀린으로 풀기 (0) | 2019.02.07 |
백준 11022번 A+b - 8, 코틀린으로 풀기 (0) | 2019.02.06 |
백준 10172번 개, 코틀린으로 풀어보기 (0) | 2019.02.05 |
최근댓글