이번에는 간단한 수학 문제(?)를 하나 풀어보았다. (물론 내가 계산 안 함) 문제 주어진 수의 제곱근이 자연수이면 1, 아니면 2를 리턴하는 문제였다. 나는 제곱근이 자연수인지 판단하는 방식으로 제곱근을 Double형으로 받아와 1로 나눈 나머지가 0일 때를 사용했다. 풀이 다른 문제들과 다르게 import 문이 들어있는데 이를 명시해주지 않으면 프로그래머스에서 sqrt가 어떤 메소드인지 모른다. 그리고, sqrt의 인자는 double형 또는 float형을 주어야 했기에 가장 자주 쓰는 double형으로 변환해 주었다. 실행 결과를 보고 '역시 컴퓨터는 연산을 하기 위한 장치였지?' 라는 생각을 다시금 하게 되었다.
이번에도 간단한 문제 풀이이다. 나는 최근 코틀린에서 제공되는 편리한 함수의 소스 코드를 보면 언제나 적응이 되질 않고 무슨 의미인지 해석할 수가 없다. 문제 배열의 원소를 내림차순으로 정렬하고 0번과 1번 인덱스 값을 곱해 리턴해야 겠다! 는 생각을 했다. 그리고 그런 기능을 하는 메소드를 찾아보았다. 역시, 제공되는 메소드가 있었다. 그런데 예~~전에 쓴 글에서 나는 분명 MutableList에게 sort와 reverse 메소드를 사용해 내림차순 정렬을 했었다. 왜 그랬을까 뭐 암튼 이유는 모르겠지만 이번엔 sortDescending이라는 메소드를 사용했다. 그런데 여기서 궁금한 점이 생겼다. sortDescending이라는 메소드가 있으면 sort와 reverse 메소드를 두 번 부를 필요가 없는데..
이번 문제는 제목 그대로 배열을 자르는 문제이다. 요즘 코틀린에 너무 익숙해져서 자바로는 어떻게 풀어볼지 고민이다. 문제 풀이들 풀이 1) 문제에서 기본적으로 answer 변수를 IntArray형으로 주었기 때문에 이에 맞춰 생각하다 보니 배열의 사이즈를 정해 빈 배열을 만들고 반복문을 통해 하나씩 값을 넣어주기로 했다. - 이 경우, for문을 통해 주어진 numbers의 값을 answer 배열에 하나씩 넣어준다. 실행 결과는 이렇다. 보면 기가 막히게 실행 속도가 빠르다. 풀이 2) 찾아보니 Array의 메소드 중 copyOfRange()라는 메소드를 사용하면 원본 배열을 변경하지 않고 지정한 범위의 배열을 리턴해준다고 한다. answer 변수의 타입도 선언하지 않고 작성해보았다. 실행 결과는 이렇다..