Android/Algorithm 32

[프로그래머스 / Kotlin] 이상한 문자 만들기

[프로그래머스 / Kotlin] 이상한 문자 만들기 문제 설명 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요. - 제한 사항 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다. 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다. 해결 과정 해당 문제는 toUpperCase와 toLowerCase를 사용하면 쉽게 풀 수 있는 문제라고 생각했다. 문제를 풀다 고민한 부분은 제한사항 1인데 해당 문장 자체를 홀수 번째 짝수번째 구분하는 것이 아니라 단어 기준..

Android/Algorithm 2024.03.18

[프로그래머스 / kotlin] 3진법 뒤집기

[프로그래머스 / kotlin] 3진법 뒤집기 문제 설명 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 해결 과정 이번 문제를 풀면서 kotlin에서 제공되는 매소드가 참 많단걸 다시한번 느꼈다. 우선 toString(3)으로 n을 3진법으로 변환했다. 그리고 reversed를 사용하여 문자열을 뒤집고 다시 toInt(3)을 이용해 10진법으로 변환하였다. toString(N)은 10진법을 N진법으로 변환한단 것이고 toInt(N)은 N진법을 10진법으로 변환한단 뜻이다. 내가 푼 코드 class Solution { fun solution(n: Int): Int { var answer..

Android/Algorithm 2024.03.14

[프로그래머스 / Kotlin] 직사각형 별찍기

[프로그래머스 / Kotlin] 직사각형 별찍기 문제 설명 이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다. 별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요 - 제한 조건 n과 m은 각각 1000 이하인 자연수입니다. 해결 과정 해당 문제는 프로그래머스에서 입력받은 a, b를 자르는 코드를 구현해놔서 고민없이 해결했다! 내가 푼 코드 fun main(args: Array) { val (a, b) = readLine()!!.split(' ').map(String::toInt) for(i in 1 .. b){ for(j in 1 .. a) print("*") println("") } }

Android/Algorithm 2024.03.14

[프로그래머스 / Kotlin] 행렬의 덧셈

[프로그래머스 / Kotlin] 행렬의 덧셈 문제 설명 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요. - 제한 조건 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다 해결 과정 각 행과 열의 값을 더하는 로직은 금방 생각해냈는데 ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0 에러를 해결하지 못해서 꽤 헤맸다. 처음엔 반복문에 arr1.size를 사용하여 풀었는데 범위가 벗어났다는 에러를 보고 반복문의 범위에 문제가 있는 줄 알고 거기에 메달렸다. 그..

Android/Algorithm 2024.03.14

[프로그래머스 / Kotlin] 문자열 다루기 기본

[프로그래머스 / Kotlin] 문자열 다루기 기본 문제 설명 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다. - 제한 사항 s는 길이 1 이상, 길이 8 이하인 문자열입니다. s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다. 해결 과정 이 문제는 두가지 조건을 만족해야 true를 반환한다. 1. 문자열 s의 길이가 4 혹은 6일 것 2. 문자열 s가 숫자로만 구성되어 있을 것 이 두가지를 판별하기 위해 두 조건식이 필요하다. 다양한 방법으로 조건을 판단 할 수 있겠지만 나는 when을 사용해서 문자열의 길이를 먼저 확인한 후..

Android/Algorithm 2024.03.14

[프로그래머스 / Kotlin] 문자열 내림차순으로 배치하기

[프로그래머스 / Kotlin] 문자열 내림차순으로 배치하기 문제 설명 문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요. s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다. - 제한 사항 str은 길이 1 이상인 문자열입니다. 해결 과정 문자열도 sort()를 이용해 내림차순을 할 수 있단 걸 처음 알았다. 처음엔 문자열을 배열에 저장해 버블 정렬을 이용하여 해결하려 하였다. 하지만 Char과 String 사이의 형 변환에서 헤매었고 혹시나 하여 사용해봤는데 sortdescending()을 통해 내림차순이 되더라! 내가 푼 문제 class Solution { fun solution(s: String)..

Android/Algorithm 2024.03.07

[프로그래머스 / Kotlin] 약수의 개수와 덧셈

[프로그래머스 / Kotlin] 약수의 개수와 덧셈 문제 설명 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요. - 제한사항 1≤ left ≤ right ≤ 1,000 풀이 과정 문제 해결 방법을 고민하다 약수 갯수를 구하는 부분과 갯수가 홀수인지 짝수인지 판단하여 더하는 부분을 구현해야겠다고 생각했다. 이 두가지를 한번에 작성하려니 보기 불편해서 약수 갯수를 구하는 부분을 함수로 빼서 사용했다. 내가 푼 문제 class Solution { fun solution(left: Int, right: Int): Int { var ..

Android/Algorithm 2024.03.07

[프로그래머스 / Kotlin] 내적

[프로그래머스 / Kotlin] 내적 문제 설명 길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요. 이때, a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이) - 제한 사항 a, b의 길이는 1 이상 1,000 이하입니다. a, b의 모든 수는 -1,000 이상 1,000 이하입니다. 해결 과정 이 문제는 반복문을 사용하면 쉽게 풀리는 문제이다. a와 b의 길이가 같기 때문에 a의 사이즈-1(식에 n-1까지 나와있기 때문에) 만큼 반복문을 돌리고 a와 b의 해당 인덱스에 있는 값들끼리 더해 풀면 된다. 내가 푼 코드 class Solut..

Android/Algorithm 2024.03.07

[프로그래머스 / Kotlin] 수박수박수박수박수박수?

[프로그래머스 / Kotlin] 수박수박수박수박수박수? 문제 설명 길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다. - 제한조건 n은 길이 10,000이하인 자연수입니다. 풀이 과정 이 문제는 반복문을 사용하여 i가 홀수 일때는 "수"를 짝수일때는 "박"을 저장하도록 구현하였다. 구간을 0 .. n 으로 정하면 원하는 것 보다 한글자 더 출력되므로 구간은 1 .. n으로 설정하였다. 내가 푼 코드 class Solution { fun solution(n: Int): String { var answer = "" for(i in 1 .. n){ if(i%2..

Android/Algorithm 2024.03.07

[프로그래머스 / Kotlin] 가운데 글자 가져오기

[프로그래머스 / Kotlin] 가운데 글자 가져오기 문제 설명 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 풀이 과정 두가지 방법을 생각하였는데 첫번째는 get()을 이용하여 문자를 뽑아오는 방식이고 두번째는 substring을 이용하여 자르는 방식이였다. 이 문제는 첫번째 방법을 이용하여 풀었다. 내가 푼 코드 class Solution { fun solution(s: String): String { var str = "" if(s.length % 2 == 0){ str = s.get((s.length/2)-1).toString() + s.get(s.length/2).toString() } else str = s...

Android/Algorithm 2024.03.07