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

[프로그래머스/코틀린(Kotlin)] 이상한 문자 만들기

문자열 s를 입력받아 각 단어의 짝수번째 알파벳은 대문자, 홀수번째 알파벳은 소문자로 리턴하기 예시) 풀이 split()으로 구분자를 기준으로 입력값을 구분 .toUpperCase()로 대문자로 변환 .toLowerCase()로 소문자로 변환 joinToString() 이용하여 구분자 생성, 제거 활용 제출 코드 (코드 해석해 보기) 3) split(' ')으로 공백(' ')을 기준으로 입력값을 구분해 준 후, 3) map과 mapIndexed를 활용해서 리스트화 후, 리스트 속 인덱스 값 변경을 한다 4) 인덱스가 짝수일 때는 대문자(.toUpperCase()), 그 외(홀 수일 때)는 소문자(.toLowerCase()) 5) 현재 상태는 [T, r, Y] [H, e, L, l, O] [W, o, R,..

[프로그래머스/코틀린(Kotlin)] 3진법 뒤집기

n을 3진법 상에서 앞뒤 순서를 뒤집은 후, 다시 10진법으로 표현하기 예시) 풀이 .toString(n)으로 해당 진법으로 표현 .toInt(n)으로 해당 진법으로 변환 제출 코드 (코드 해석해 보기) 자연수 n을 toString(3)을 이용해서 3진법으로 표현 후, reversed()로 뒤집는다 다시 .toInt(3)으로 3진법으로 변환해 준다 .toString과 .toInt를 통해서 진법 변환을 할 수 있다

[프로그래머스/코틀린(Kotlin)] 최대공약수와 최소공배수

n과 m의 최대공약수와 최소공배수를 배열로 리턴 시키기 예시) 풀이 최대공약수 = (큰 수) / (작은 수)를 반복, (큰 수) 대신 나머지를 대입하다가 한 개의 수가 0이 되는 순간, 나머지의 수 최소공배수 = (두 수의 곱) / (최대공약수) 유클리드 호제법 제출 코드 (코드 해석해 보기) 최대공약수(gcd)는 재귀함수로 구하며, 최소공배수(lcm)는 (두 수의 곱) / (최대공약수)로 구할 수 있다 (재귀함수는 자기 자신을 호출하는 함수, 똑같은 구조의 함수를 반복해서 사용할 필요가 있을 때 사용되며 탈출조건이 있어야 무한루프에 빠지지 않는다) 7) gcd함수를 만들고 (n < m)인 경우에는 n이 0이 아닐 때 gcd(n, m%n)을 이용해서 최대공약수를 구해주고 그 외(n이 0일 때)는 m을 리..

[프로그래머스/코틀린(Kotlin)] 직사각형 별찍기

가로의 길이가 n, 세로의 길이가 m인 직사각형 형태의 *을 출력해 보기 예시) 풀이 반복문 사용하기 \n 활용하기 제출 코드 (코드 해석해 보기) *을 a만큼 repeat 시킨 후 뒤에 \n으로 줄 바꿈 해준다 (가로줄) a만큼 반복한 * + \n(줄 바꿈)을 b만큼 repeat 시킨다 (세로줄) readLine() readLine()!! 은 코틀린 1.8부터 readIn()으로 사용할 수 있다고 한다 *Standard input으로부터 데이터를 가져오는 함수이고, 기본적으로 데이터를 String 타입으로 가져온다 (*Standard Input/Output : 표준 입출력, print() 함수를 키보드를 이용해 입력받고 모니터를 이용해 출력받는 것) 어떤 값을 받더라도 문자열 자료형(String)으로 ..

[프로그래머스/코틀린(Kotlin)] 행렬의 덧셈

행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과를 리턴하기 예시) 풀이 Array() 사용하기 제출 코드 (코드 해석해 보기) Array(사이즈){인덱스값 변경} 크기가 arr1.size 이고, 인덱스 값 변경을 이용해서 i와 j를 각각 arr1과 arr2의 행열의 더한 값으로 바꿔준다 라는 코드인데 솔직히 아무리 풀어보려고 머리를 써봐도 모르겠어서 답지를 찾아봤고, 답지를 보고 해석해보려 하는데도 해석이 안된다.. {인덱스값 변경} 부분을 아무리 검색해봐도 잘 모르겠다.. (왜 IntArray(arr[i].size){}로 쓰이는지부터) 그래서 나의 추측해석은 크기가 arr1.size인 Array의 인덱스값 i를 IntArray(arr1[i].size)로 바꿔준다 (arr1과..

[프로그래머스/코틀린(Kotlin)] 문자열 다루기 기본

문자열 s의 길이가 4 또는 6이면서 숫자로만 구성돼 있는지 확인하는 함수 리턴하기 예시) 풀이 논리연산자 사용하기 컬렉션 조건 함수 사용하기 isDigit() 사용하기 제출 코드 (코드 해석해 보기) 문자열 s.length가 4거나 6일 때, s의 문자열이 숫자로만 구성돼 있으면 true를 리턴한다 논리 연산자 || 와 &&을 이용한다 컬렉션 조건 함수 all : 컬렉션의 원소 중에, 조건을 만족하는 원소가 하나라도 있을 때(return type = Boolean) any : 컬렉션의 모든 원소가 조건을 만족할 때 (return type = Boolean) none : 컬렉션에 조건을 만족하는 원소가 없을 때 (return type = Boolean) contains : 컬렉션에 해당 원소가 있는지 체..

[프로그래머스/코틀린(Kotlin)] 부족한 금액 계산하기

기본 이용료가 price원인데 n번 째 이용한다면 price의 n배를 받는다 놀이기구를 count번 타게 되면 현재 자신의 money에서 얼마가 모자라는지 리턴하기 but, money가 부족하지 않으면 0을 리턴하기 예시) 풀이 for문으로 놀이기구를 count만큼 탔을 때 이용 금액을 계산한다 if else로 이용금액이 money보다 크거나 같으면 (이용금액 - money)을 리턴한다 else(money가 더 클 경우) 0을 리턴한다 제출 코드 (코드 해석해 보기) 5) for문에 count횟수만큼 answer(이용금액)에 이용료*이용횟수를 더해준다 → 놀이기구의 총 이용료 도출 8) 놀이기구의 총 이용료(answer)가 가지고 있던 금액(money)보다 크거나 같을 때 answer-money를 리턴한..

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

문자열을 내림차순으로 배치하기 예시) 풀이 내림차순 정렬 sortedArrayDescending() 사용하기 제출 코드 (코드 해석해 보기) 이번 문제는 보자마자 정수 내림차순으로 배치하기 문제가 떠올랐다 그래서 똑같이 적고 뒤에 타입만 String으로 바꿔주었다 (근데 정리하면서 보니까 어차피 String이라 toSring() 안 적어도 되는 거였네)

[프로그래머스/코틀린(Kotlin)] 약수의 개수와 덧셈

left와 right사이의 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 리턴하기 예시) 풀이 범위가 left .. right인 for문 범위 사이의 수를 약수인지 체크하기 범위 사이의 수에서 약수가 나올 때마다 개수를 ++ 시켜준다 if else로 약수의 개수가 짝수일 땐 +, 홀수일 땐 - 시켜준다 제출 코드 (코드 해석해 보기) for문에 left부터 rifght까지 범위를 지정한 i를 반복한다 (left와 right 사이의 수로 약수를 구하기 위해) i의 약수를 구하는데, 약수의 개수를 알기 위해 num을 선언해 놓고 약수가 나올 때마다 num에 1씩 더해준다 if else문을 사용해서 num(left와 right 사이에 있는 임의의 수 i의 약수개수)이 짝..

[프로그래머스/코틀린(Kotlin)] 내적

a와 b의 내적을 리턴하기 예시) 풀이 for문을 사용해서 반복시키기 제출 코드 (코드 해석해 보기) 내적이라는 걸 처음 들어봐서 당황했으나, 예시와 공식이 나와있어서 다른 문제들에 비해서 무난하게 for문을 활용하여 풀었다 for문을 이용해서 a배열의 사이즈만큼 반복시키고 내적을 구하는 공식을 대입해 줬다 상당히 어려울 줄 알았는데, 생각보다 일찍 해결해서 다른 사람들의 풀이를 봤는데 zip, mapIndexed, indices라는 것들을 알게 되었다 zip zip은 Index 순서가 동일한, 서로 연관된 리스트를 더욱 쉽게 사용한다 a.zip(b) a와 b리스트의 값을 직접 묶기보단, 두 리스트값을 이용하여 새로운 값을 만들 때 사용된다 a zip b List로 반환되며, 두 리스트의 값을 온전히 묶..