신규 블로그를 만들었습니다!

2020년 이후부터는 아래 블로그에서 활동합니다.

댓글로 질문 주셔도 확인하기 어려울 수 있습니다.

>> https://bluemiv.tistory.com/

해당 문제는 직접 풀어보고 채점까지 마친 뒤, 작성한 글입니다.

문제풀이는 아래쪽에 있으니, 풀이를 보고싶은 분은 아래쪽을 확인하시면 됩니다.

 

문제 출처
https://www.acmicpc.net/problem/15904

 

15904번: UCPC는 무엇의 약자일까?

첫 번째 줄에 알파벳 대소문자, 공백으로 구성된 문자열이 주어진다. 문자열의 길이는 최대 1,000자이다. 문자열의 맨 앞과 맨 끝에 공백이 있는 경우는 없고, 공백이 연속해서 2번 이상 주어지는 경우도 없다.

www.acmicpc.net

 

문제

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번 개, 코틀린으로 풀어보기

 

백준 10172번 개, 코틀린으로 풀어보기

해당 문제는 직접 풀어보고 작성한 글 입니다. 궁금한점이 있거나 더 효율적인 방법으로 푸는 방법이 있다면 댓글로 알려주세요~ 코드와 풀이는 아래에 있습니다. 문제를 아시는분은 문제설명을 생략하고 아래쪽에..

hongku.tistory.com

2019/02/06 - [Algorithm/백준 온라인 저지] - 백준 11022번 A+b - 8, 코틀린으로 풀기

 

백준 11022번 A+b - 8, 코틀린으로 풀기

문제 풀이에 대한 내용과 코드는 아래에 있습니다. 문제를 아시는 분은 아래로 내려가서 확인 할 수 있습니다. 문제 출처 - 백준 https://www.acmicpc.net/problem/11022 문제 두 정수 A와 B를 입력받은 다음, A+B..

hongku.tistory.com

2019/02/07 - [Algorithm/백준 온라인 저지] - 백준 2438번 별찍기, 코틀린으로 풀기

 

백준 2438번 별찍기, 코틀린으로 풀기

해당 문제는 직접 풀어보고 채점도 마친 뒤에 작성한 글입니다. 궁금한점이 있거나, 틀린부분(?) 또는 효율적인 부분이 있다면 댓글로 알려주세요. 문제 풀이는 아래에 위치해 있습니다. 문제를 알고 있다면, 생략..

hongku.tistory.com

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기