코틀린(Kotlin)/프로그래머스 39

[프로그래머스/코틀린(Kotlin)] 가운데 글자 가져오기

배열 s의 가운데 글자를 반환하기 but, 단어의 길이가 짝수일 경우 가운데 두 글자를 반환하기 예시) 풀이 if else문을 사용해서 단어의 홀수, 짝수 일 때 구분하기 .get을 사용해서 배열 속 인덱스 찾기 제출 코드 (코드 해석해 보기) 배열 s속 인덱스를 찾기 위해서 s.get을 사용해 준다 짝수일 땐 s.length/2-1로 가운데 앞과 , s.lenghth/2로 가운데 뒤쪽을 받는다 홀수일 땐 s.length/2로 가운데 글자를 받는다 (단어의 길이가 홀수일 땐 s/2+1, 짝수일 땐 s/2와 s/2+1 글자를 리턴하면 되는데,get(인덱스) 임을 잊지 말자) to.String().. 처음 제출한 코드에는 짝수일 경우에 s.get(s.length/2-1)로 썼었다 왜 또 도대체 에러가 뜬 건..

[프로그래머스/코틀린(Kotlin)] 제일 작은 수 제거하기

정수 배열 arr에서 가장 작은 수를 제거하기 but, 빈 배열인 경우엔 -1을 리턴하기 예시) 풀이 filterNot을 사용해서 minOrNull() 제거하기 빈 배열(인덱스가 0인)은 intArrayOf(-1)로 -1 리턴하기 제출 코드 (코드 해석해 보기) 빈 배열일 경우 -1을 리턴하기 위해 arr.size가 1일 때 intArrayOf(-1)로 -1을 리턴 시킨다 filterNot을 사용해서 minOrNull()을 제외하고 리턴 시킨다 (filterNot 대신 filter를 사용하고 it != arr.minOrNull() 해도 된다) 리스트가 Int형이기 때문에 toIntArray()로 변형시켜 준다 filterNot을 사용하는 것까진 좋았다 그런데 arr.minOrNull()이 아니라 arr...

[프로그래머스/코틀린(Kotlin)] 없는 숫자 더하기

0부터 9까지의 숫자 중 일부로 이루어진 정수 배열 numbers에서 해당하지 않는 수들의 합 구하기 예시) 풀이 (0~9 사이의 숫자의 합) - (numbers배열의 합) = (numbers배열에 없는 숫자들의 합) 제출 코드 (코드 해석해 보기) (0..9).sum() = 0부터 9까지 숫자의 합 numbers.sum()을 이용해서 빼준다 (filter를 이용해서 풀어보려 했는데.. 훨씬 쉬운 방법을 선택했다..)

[프로그래머스/코틀린(Kotlin)] 핸드폰 번호 가리기

끝자리 4개를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하기 예시) 풀이 mutableList 사용하기 List에서 Set을 사용하여 뒷자리를 제외한 나머지 숫자를 *로 수정해 주기 joinToString 사용하기 제출 코드 (코드 해석해 보기) 배열을 mutableList를 사용해서 리스트화시킨다. length-4까지만(처음부터 끝에서 5번째까지만) 반복시킨다 set을 사용해서 처음부터 끝에서 5번째까지의 인덱스의 값을 *로 수정해 준다 joinToString("")을 이용해서 출력 시에 구분자(,)를 없애준다 배열을 보고 리스트화를 이용해서 쉽게 풀 수 있을 줄 알았다 Set을 사용해서 리스트 속 인덱스 수정까지는 떠올랐기 때문이다 하지만 joinToString을 몰랐었던 내게 큰 시련이 ..

[프로그래머스/코틀린(Kotlin)] 음양 더하기

signs배열의 정수를 이용해서 absolutes배열 속 정수들의 합을 구하기 예시) 풀이 불리언(boolean) 타입이 참일 때와 거짓일 때를 구분한다 absolutes.size만큼 반복해서 if문을 이용해서 각 조건에 맞게 더하거나 빼준다 참일 때, 양수이므로 더해준다 거짓일 때, 음수이므로 빼준다 제출 코드 (코드 해석해 보기) 우선, booleanArray라는 것을 처음 알았다. 검색해 본 결과, 제한 사항에 있듯이 signs[i]가 양수일 땐 true, 음수일 땐 false를 반환시켜주는 배열이었음을 알았다. (처음 보는 배열이라 문제를 이해할 생각보다 booleanArray가 뭔지부터 알고 싶었다) for문을 이용해서 ( i in 0 until absolutes.size)까지 반복시키고 (ab..

[프로그래머스/코틀린(Kotlin)] 나누어 떨어지는 숫자 배열

임의의 배열 속 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하고, divisor로 나누어 떨어지는 element가 하나도 없으면 배열에 -1을 담아 반환하기 예시) 풀이 배열의 리스트화를 위해 mutableListOf() 사용하기 오름차순 sort() 사용하기 반복문 for를 사용해서 배열 속의 element가 divisor로 나누어 떨어지는 수 찾기 divisor로 떨어지는 element일 때 해당 element를 배열에 추가 제출 코드 (코드 해석해 보기) mutalbeListOf()로 리스트화시킨 후 반복문 for를 이용해 해당 조건일 때 리스트에 해당 element를 추가해 준다 (for (i in 0 until arr.size) => 인덱스는 0부터니까..

[프로그래머스/코틀린(Kotlin)] 콜라츠 추측

주어진 수가 1이 될 때까지 특정 조건을 반복하는데, 이 작업을 몇 번 반복하는지 리턴하기 but 주어진 수가 1일 경우에는 0을, 작업을 500번 반복할 때까지 1이 되지 않으면 -1 리턴하기 예시) 풀이 while문을 사용해서 특정 조건일 때 리턴 시키기 짝수일 경우와 홀수일 경우, 1일 경우 세가지 조건 카운트가 500번이 넘어가면 -1 리턴 시키기 제출 코드 (코드 해석해 보기) while문을 사용해서 n이 1이상이면서 작업 횟수가 500 미만일 때 반복시켜 놓고 n이 1이면 cnt = 0으로 n이 짝수면 나누기 2를 한 후 작업횟수++ 반복 그 외(홀수 일 경우)엔 3을 곱한 후 +1 작업횟수++ 반복 return if else로 카운트가 500일 때 -1을 return 시키고 아닐 경우 앞에서..

[프로그래머스/코틀린(Kotlin)] 두 정수 사이의 합

두 정수 a와 b 사이에 속한 모든 정수의 합을 리턴하기 예시) 풀이 if else를 사용해서 정수 a와 b의 대소관계를 측정하고 각 조건에 맞도록 코드 작성 제출 코드 (코드 해석해 보기) a와 b의 대소관계가 정해져 있지 않기 때문에 if else를 사용해서 각 조건에 관한 코드작성 범위.map 리스트화시킨 후 .sum()을 이용해서 (a..b)리스트 속 수들의 합 도출 a와 b가 같은 경우 둘 중 아무 수나 리턴하라고 했으므로, 범위에서 (a..b)를 사용한다 ex) 3..3은 3이기 때문에