목록으로

Programming Notes

코틀린으로 만든 계산기, 그리고 제곱근 판별 알고리즘 탐험

오늘은 코틀린을 활용하여 간단한 계산기를 만들고, 제곱근 판별 알고리즘 문제를 풀어보면서 하루를 마무리했습니다. 특히 알고리즘 문제에서 코틀린의 강력한 형변환 기능 덕분에 간단하게 문제를 해결할 수 있었던 경험이 인상 깊었습니다. 코틀린의 편리한 형변환 기능 오늘 코드 카타에서...

오늘은 코틀린을 활용하여 간단한 계산기를 만들고, 제곱근 판별 알고리즘 문제를 풀어보면서 하루를 마무리했습니다. 특히 알고리즘 문제에서 코틀린의 강력한 형변환 기능 덕분에 간단하게 문제를 해결할 수 있었던 경험이 인상 깊었습니다.

코틀린의 편리한 형변환 기능

오늘 코드 카타에서 문자열을 정수로 변환하는 과정에서 코틀린의 toInt() 함수가 얼마나 편리한지 다시 한번 실감했습니다. 문자열 앞에 "+"나 "-" 기호가 붙어 있어도 별도의 처리 없이 깔끔하게 정수로 변환해주는 덕분에, 복잡한 로직 없이 간단하게 코드를 작성할 수 있었습니다. 예를 들어, "+123"이나 "-456"과 같은 문자열도 toInt() 함수 하나로 쉽게 정수로 변환할 수 있습니다. 다른 언어였다면 별도의 정규 표현식을 사용하거나, 조건문을 통해 부호를 판별해야 했을지도 모릅니다.

제곱근 판별 알고리즘, 두 가지 접근 방식

오늘 풀어본 문제는 주어진 양의 정수 n이 어떤 양의 정수 x의 제곱인지 판별하고, 제곱이라면 x+1의 제곱을 반환하고, 제곱이 아니라면 -1을 반환하는 문제였습니다. 처음에는 단순하게 반복문을 사용하여 1부터 n/2까지 숫자를 하나씩 제곱해 보면서 n과 일치하는지 확인하는 방법을 사용했습니다. 반복 횟수를 줄이기 위해 n/2까지만 탐색했지만, 여전히 시간이 오래 걸리는 케이스가 존재했습니다.

하지만 좀 더 효율적인 방법을 고민한 끝에 제곱근을 활용한 접근 방식을 떠올렸습니다. Math 클래스에 있는 sqrt() 함수를 이용하여 n의 제곱근을 구하고, 이 값이 정수인지 확인하는 것이죠. 제곱근이 정수라면, (x+1)의 제곱을 계산하여 반환하면 되고, 정수가 아니라면 -1을 반환하면 됩니다. 이 방법은 반복문을 사용하는 첫 번째 풀이보다 훨씬 빠르게 결과를 얻을 수 있었습니다.

마무리하며

오늘은 코틀린의 편리한 기능을 활용하여 간단한 문제부터 효율적인 알고리즘까지 다양한 경험을 할 수 있었습니다. 특히 제곱근 판별 문제에서 처음에는 단순한 반복문으로 접근했지만, 수학적 지식을 활용하여 더욱 효율적인 코드를 만들 수 있었던 점이 기억에 남습니다. 앞으로도 다양한 문제에 도전하면서 코틀린과 알고리즘 실력을 꾸준히 향상시켜 나가야겠습니다.