이 문제는 내 블로그에 꾸준히 등장하는 패턴이다. 문자형을 정수형으로 변환하는 게 핵심인데, 코틀린으로 벌써 이 유형을 4번째 풀고 있다. 하지만, 귀신같이 오늘도 헷갈려서 내 블로그를 뒤적였다. 문제를 다같이 보자. 문제 반복문으로 문자열 각 인덱스를 정수형으로 변환해 모두 더하면 끝이다. 풀이 다시 한 번 나에게 상기시키는 메소드지만, Character를 Int로 바꿀 때는 웬만한 상황에서 digitToInt()를 사용하면 된다. 웬만한 상황이라 적은 이유는 코틀린 버전이 낮은 상황(1.5 아래)에선 Character.getNumericValue를 사용해야하기 때문이다. 실행 결과
이번 문제는 문자열 안의 숫자를 찾아 모두 더하는 문제이다. 문제 밑에 살짝 잘린 유의사항이 있는데 연속된 숫자도 한 자리 숫자로 취급한다고 한다. 내가 이 문제를 푼 방식은 문자열의 인덱스마다 문자를 정수로 형변환하고 그 값을 더해 리턴하는 것이었다. 그런데 만약 정수로 형변환할 인덱스의 문자가 정수형이 아니라면? 당연히 에러가 날 것이다. 형변환이 불가능하다고.. 그럼 어떻게 해야할까.. 나는 try-catch를 사용했다. 만약 형변환을 하는데 에러가 발생하면 그냥 반복문을 continue하도록 처리했다. 풀이 그리고 다시 Char to Int의 형변환을 알아보았는데 나는 전에 Character.getNumericValue()를 사용했었다. 하지만, 위의 메소드는 코틀린 버전이 낮을 때(1.5 이전)..
오늘은 정렬 기능을 사용해야하는 문제였다. 문제 이전 문제들을 풀때 사용했던 방식을 가져와 일단 n을 MutableList에 하나씩 각 자리의 수를 추가해주었다. 그렇게 완성된 MutableList를 내림차순으로 정렬하려고 찾아보았더니 먼저 sort() 메소드를 통해 오름차순으로 정렬하고 reverse() 메소드로 역순 정렬을 할 수 있었다. 이렇게 내림차순으로 완성한 MutableList를 비어있는 String 변수에 0번 인덱스부터 차례대로 추가해주었고 이를 Long타입으로 변환하여 리턴될 answer 변수에 대입해주었다. 풀이 println 주석은 만든 MutableList가 내림차순까지 정렬이 되었는지 보기 위해 작성해보았다.
오늘 해결한 문제는 전에 풀었던 문제 중 겪었던 에러를 또 한 번 겪게 되어 조심해야겠다...는 생각을 하게 해준 문제이다. 문제 먼저 x를 한자리씩 떼어 덧셈을 해야하므로 String형으로 변경한 후 그 길이만큼 반복하며 다른 변수에 자릿수 합을 저장했다. 이 때, 저번에 문제를 풀며 겪었던 문제를 다시 겪게 되었는데 정수형 변수에 자릿수 합을 저장하려 했지만 String으로 변경한 x 변수의 각 자리는 Char형이기 때문에 해당하는 유니코드 값이 저장되었다. 풀이 이 코드에서 문제가 되었던 부분이 바로 for문에서 실행된 문장이었다. tempSum이라는 변수에 자릿수 합을 저장해야 했는데 xToString[i].toInt()를 += 연산자를 통해 tempSum에 더해주면 숫자의 유니코드 값이 더해졌다..
오늘은 크게 어려운 점이 없어서 바로 본론으로 들어가면 될 듯하다. 문제 이번에 문제를 보고 생각한 풀이는 입력받은 정수를 문자열로 먼저 바꾸고 리턴될 타입이 정수형 배열이기 때문에 미리 리턴될 배열의 길이를 정해놓고 그 안에 요소를 하나씩 주어진 숫자의 역순으로 대입해주면 될 것이다. 풀이 먼저, n을 문자열로 저장할 numberToString 변수를 만들었다. 여기에 정수 n을 toString()으로 문자열로 변환해 대입해주었다. answer는 리턴될 정수형 배열로 만들어져있었지만 처음엔 intArrayOf()를 통해 만들어져 있었고, 이 때 배열의 길이를 정하려고 위처럼 numberToString.length를 파라미터로 주었지만 해당하는 숫자 하나만을 가진 길이 1짜리 배열이 생성되었고... 이를..