Android/Algorithm 32

[프로그래머스 / Kotlin] 제일 작은 수 제거하기

[프로그래머스 / Kotlin] 제일 작은 수 제거하기 문제 설명 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다. - 제한 조건 arr은 길이 1 이상인 배열입니다. 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다. 해결 방법 - 문제 발생! 처음 문제를 읽고 전에 풀었던 문제와 같은 유형이라고 생각했다. 배열을 내림차순 한 후 마지막 요소만 빼고 새로운 배열에 저장하면 되는 문제라고 생각한 것이다. 이 생각을 가지고 코드를 작성하였고 ..

Android/Algorithm 2024.03.06

[프로그래머스 / Kotlin] 없는 숫자 더하기

[프로그래머스 / Kotlin] 없는 숫자 더하기 문제 설명 0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요. - 제한사항 1≤ numbers의 길이 ≤ 9 0 ≤ numbers의 모든 원소 ≤ 9 numbers의 모든 원소는 서로 다릅니다. 해결 방법 문제를 보자마자 빈 숫자를 찾는 것 보다 입력받은 수를 다 합친 다음 1~9를 합친 값에서 빼면 되는게 아닐까 라는 생각을 했다. 문제 의도는 빈 숫자를 구해서 하나하나 더하길 바란 것 같지만 쉬운 길을 깨달아버렸다.. for문을 사용하지 않아도 sum()을 사용하면 쉽게 합을 구할..

Android/Algorithm 2024.03.06

[프로그래머스 / Kotlin] 핸드폰 번호 가리기

[프로그래머스 / Kotlin] 핸드폰 번호 가리기 문제 설명 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요. - 제한조건 phone_number는 길이 4 이상, 20이하인 문자열입니다. 풀이 과정 문제를 해결하긴 해결했는데 너무 비효율적으로 문제를 푼 느낌이다. 찾아보면 더 간단하게 풀 수 있는 함수가 있을 것 같은데 눈에 보이는 대로 푼 느낌. 문제는 보자마자 해결했지만 코드가 마음에 들지 않는다. -- for을 두개 사용하지 않고 for문 안에 if 문을 넣어서 사용할 수 ..

Android/Algorithm 2024.03.06

[프로그래머스 / Kotlin] 음양 더하기

[프로그래머스 / Kotlin] 음양 더하기 문제 설명 어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요. 해결 과정 해당 문제를 읽고 booleanArray의 크기만큼 for 반복문을 돌려 true면 absolutes[i] 값을 그대로 더하고 false면 -한 값을 더하면 되겠다고 생각하였다. 문제 해결 방법은 금방 생각해냈지만 for 조건문을 (i in signs)라고 잘못작성해 조금 헤매였다. i를 0부터 사이즈 만큼 돌려야 하는데 요소가 불러와져 signs[i] 부분에서 계속하여 에러를 일으킨 ..

Android/Algorithm 2024.03.06

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

문제 설명 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요. - 제한 사항 arr은 자연수를 담은 배열입니다. 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다. divisor는 자연수입니다. array는 길이 1 이상인 배열입니다. 풀이 과정 해당 문제를 구현하는데에는 크게 어려움을 겪지 않았다. 3가지 함수만 알고 있다면 이 문제를 쉽게 해결이 가능한데 배열을 오름차순으로 정렬하는 sort(), 배열의 크기를 구하는 size, 배열이 비어있는지 확인하는 isEmpty() 이다. 해당 문제는..

Android/Algorithm 2024.03.06

[프로그래머스 / Kotlin] 서울에서 김서방 찾기

문제 설명 String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다. - 제한사항 seoul은 길이 1 이상, 1000 이하인 배열입니다. seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다. "Kim"은 반드시 seoul 안에 포함되어 있습니다. 풀이 과정 해당 문제는 푸는 중 딱히 어려움을 겪지 않았다. 배열에서 해당 문자열의 위치를 확인하는 indexOf()를 사용하여 쉽게 풀었다. 내가 푼 코드 class Solution { fun solution(seoul: Array): String { retu..

Android/Algorithm 2024.03.06

[프로그래머스 / Kotlin] 콜라츠 추측

문제 설명 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 예를 들어, 주어진 수가 6이라면 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야 하는지 반환하는 함수, solution을 완성해 주세요. 단, 주어진 수가 1인 경우에는 0을, 작업을 500번 반복할 때까지 1이 되지 않는다면 –1을 반환해 주세요. - 제한사항 입..

Android/Algorithm 2024.03.06

[프로그래머스 / kotlin] 두 정수 사이의 합

문제 설명 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. - 제한조건 a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요. a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다. a와 b의 대소관계는 정해져있지 않습니다. 해결과정 문제 설명만 보았을때는 a부터 b까지 반복문을 돌려 그 사이의 합을 다 더하면 되겠다는 생각을 하였다. 하지만 전 문제에서 제한 조건을 잘 보지 않아 헤맸던 것을 생각하고 제한조건을 확인하였다. 주의깊게 볼 문장은 두번째, 세번째 문장이였는데 두번째 문장은 자료형을 Long으로 해야한다는 것 ..

Android/Algorithm 2024.03.06

[프로그래머스 / Kotlin] 하샤드 수

문제 설명 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. - x는 1 이상, 10000 이하인 정수 입니다. 풀이 과정 문제를 읽자마자 아 각 자리를 더한 후 더한 값으로 입력받은 x를 나누어 보면 되겠구나. 라고 생각했다. 나누었을 때 나머지가 0이라면 true 아니면 false를 반환하면 된다고 생각하였다. 하지만 이번 문제를 풀면서 2번의 오류를 겪었다. 첫째로 제한조건을 보지 않고 예시만 보고 입력 받은 수가 2자리수라고 단정한 것이다. //첫번째 실수 class Sol..

Android/Algorithm 2024.03.05

[프로그래머스 / Kotlin] 시저 암호

문제 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀면 "a"가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요. 해결과정 처음에는 입력 받은 문자를 .toInt()를 사용하여 아스키 코드로 바꾼 후 n의 값을 더하고 다시 형변환을 시키는 과정을 생각했다. 하지만 문자 상태에서 정수를 더하면 굳이 형변환을 하지 않아도 아스키 코드를 증가 감소 시킬 수 있단 것을 알게 되었고 s를 한글자 한글지 분리 한 후 한글자씩 암호문을 만들어 다시 조합하는 식의 방법을 택했다. 코드 clas..

Android/Algorithm 2024.02.29