오늘은 코틀린을 사용하여 간단한 알고리즘 문제를 해결하는 방법을 살펴보겠습니다.
주제는 “칵테일 만들기”입니다. 이 문제는 다양한 재료를 조합하여 원하는 칵테일을 만드는 과정을
통해 효율적인 알고리즘 설계와 구현을 배울 수 있도록 돕습니다.
문제의 기본 개념을 이해한 후, 코드를 작성하고, 테스트를 진행하는 과정에서
실제 코딩테스트에서 중요한 여러 요소를 익힐 수 있습니다.
문제 설명
지금 우리는 칵테일 바의 바텐더입니다. 고객은 자신이 원하는 색깔을 요구하였고, 우리는
여러 재료를 사용하여 그 색깔에 맞는 칵테일을 만들어야 합니다.
다음과 같은 입력이 주어집니다:
- 재료의 개수 N (1 <= N <= 100)
- 각 재료의 색깔이 기록된 배열 colors (각각의 색깔은 문자열로 주어짐)
- 고객이 요청한 색깔 targetColor (문자열)
우리는 고객이 요청한 색깔의 칵테일을 만들 수 있는지를 판단해야 합니다.
만약 만들 수 있다면 “가능”, 그렇지 않다면 “불가능”을 출력해야 합니다.
입력 예시
5 "red", "blue", "green", "yellow", "red" "purple"
출력 예시
가능
알고리즘 설계
이 문제를 해결하기 위해서는 몇 가지 단순한 연산을 수행해야 합니다.
먼저, 주어진 색깔들을 모두 확인하여 고객의 요청과 매칭되는 색깔이 있는지를 검사해야 합니다.
다음과 같이 접근할 수 있습니다:
- 주어진 색깔 배열에서 고객의 요청과 일치하는 색깔이 있는지 탐색합니다.
- 일치하는 색깔이 발견되면 “가능”을 출력하고, 반복을 종료합니다.
- 모든 색깔을 검사한 후에도 일치하는 색깔이 없으면 “불가능”을 출력합니다.
코드 작성
이제 위에서 설계한 알고리즘을 바탕으로 코틀린 코드를 작성해 보겠습니다.
코틀린 특유의 간결한 문법을 활용하여 문제를 해결하는 코드를 아래와 같이 구현할 수 있습니다.
fun canMakeCocktail(colors: Array, targetColor: String): String { for (color in colors) { if (color == targetColor) { return "가능" } } return "불가능" } fun main() { val colors = arrayOf("red", "blue", "green", "yellow", "red") val targetColor = "purple" println(canMakeCocktail(colors, targetColor)) }
코드 설명
위 코드에서 canMakeCocktail
함수는 두 개의 매개 변수를 받습니다.
첫 번째 매개 변수는 색깔의 배열이며, 두 번째 매개 변수는 고객이 원하는 색깔입니다.
for
루프를 사용하여 배열을 순회하면서, 요청한 색깔과 일치하는 색깔이 있는지 검사합니다.
만약 일치하는 색깔이 발견된 경우, “가능”을 반환하고 종료합니다.
모든 색깔을 검사한 후 일치하는 경우가 없다면 “불가능”을 반환합니다.
main
함수에서는 주어진 색깔 배열과 고객의 요청 색깔을 설정하고,
canMakeCocktail
함수를 호출하여 결과를 출력합니다.
테스트 케이스
이제 코드를 테스트 해 보겠습니다. 여러 가지 입력 사례를 통해 우리 코드가
정확하게 기능하는지 확인해 보겠습니다.
1. 일반적인 경우
입력: ["red", "blue", "green", "yellow", "red"], "green" 출력: 가능
2. 요청한 색깔이 없는 경우
입력: ["red", "blue", "green", "yellow", "red"], "orange" 출력: 불가능
3. 중복된 색깔이 있는 경우
입력: ["red", "blue", "blue", "yellow", "red"], "blue" 출력: 가능
4. 모든 색깔이 같은 경우
입력: ["red", "red", "red", "red", "red"], "red" 출력: 가능
5. 색깔 배열이 비어 있는 경우
입력: [], "red" 출력: 불가능
결과 분석
모든 테스트 케이스에서 예상한 대로 결과가 출력되었습니다.
이를 통해 작성한 코드가 요구 사항을 충족하며,
다양한 경우의 수를 고려한 알고리즘으로 동작함을 확인할 수 있었습니다.
정리
이번 강좌에서는 코틀린을 사용하여 간단한 알고리즘 문제를 해결하는 방법을 배우았습니다.
칵테일 만들기 문제를 통해 배열 탐색, 조건문 사용, 함수 정의 등을 익힐 수 있었습니다.
알고리즘 문제를 해결할 때는 문제의 요구사항을 명확히 이해하고,
그에 맞는 데이터 구조와 알고리즘을 잘 선택하는 것이 중요합니다.
여러분도 다양한 문제를 통해 알고리즘 능력을 키워 나가시길 바랍니다.
다음 시간에는 더 복잡한 문제를 가지고 돌아오도록 하겠습니다.
감사합니다!