2023. 1. 2. 18:07ㆍ알고리즘/문제
모든 문제와 사진의 저작권은 프로그래머스에 있습니다.
알고리즘과 코틀린의 숙련도를 향상하기 위해 찾아보던 중 발견한 프로그래머스 입문 과정입니다.
상당히 입문용으로 좋다고 생각해 코틀린을 사용해 전부 해보기로 하였습니다.
아래의 링크를 타면 매일 풀 수 있는 문제가 있습니다.
모두 실력 향상을 위해 정진!!
https://school.programmers.co.kr/learn/challenges/beginner?order=acceptance_desc&page=1
오늘은 많은 문제 중 기억해야하는 부분을 정리하겠습니다. 1편 시작.
1일 차와 2일 차에는 정말 기본적인 것만 있습니다.
다들 하실 수 있다고 생각합니다.
이 중에 Day2 배열 두 배 만들기를 보면
코틀린을 사용하여 아주 간단하게 할 수 있습니다.
numbers [ 1, 2, 3, 4, 5]
result [ 2, 4, 6, 8, 10 ]
각 배열의 값을 두배한 배열을 반환하면 됩니다.
코틀린의 콜렉션 Transformation map을 이용하여 아주 간단하게 표현할 수 있습니다.
for문을 이용해 같은 하나씩 읽어 새로운 배열에 X2 한 값을 넣고 새로운 배열을 return 할 수 있지만
코틀린은 아래처럼 한 줄로 가능합니다.
fun solution(numbers: IntArray) = numbers.map { it*2 }
map 에 관한 자세한 내용은 아래에서 확인할 수 있습니다.
https://dev-musa.tistory.com/74
두 번째로
분수 만들기!
분수 만들기는
입력으로 4개의 숫자를 주고 앞의 두 개가 첫번째 분수 뒤의 두개가 두 번째 분수입니다.
두 개를 더해서 약분된 분자 분모를 담은 배열을 return 해야 합니다.
분수 만들기에서 중요한 건
최대공약수를 구하는 것입니다.
최대 공약수는 ( Greatest Common Divisor, GCD ) 대표적으로 두 가지 방법을 사용해 구할 수 있습니다.
1. 반복문
2. 재귀함수
1. 반복문
fun gcd(a: Int, b: Int) : Int {
var num1 = a
var num2 = b
while(num2 != 0 ) {
if( num1 < num2 ) {
val temp = num1
num1 = num2
num2 = temp
}
val t = num1%num2
num1 = num2
num2 = t
}
return num1
}
2. 재귀 함수
fun gcd(a: Int, b:Int): Int = if (b != 0) gcd(b, a % b) else a
유클리드 호제법을 이용하여 코드를 구성하였습니다.
분수를 먼저 통분하고 gcd를 통해 나누어 주면 간단하게 답을 구할 수 있습니다.
다음 시간에 뵙겠습니다.
'알고리즘 > 문제' 카테고리의 다른 글
프로그래머스 알고리즘 Level1 코틀린 명예의 전당 (0) | 2023.01.22 |
---|---|
프로그래머스 알고리즘 Level 1 코틀린 가장 가까운 글자 (0) | 2023.01.22 |
프로그래머스 알고리즘 Level1 코틀린 크기가 작은 부분문자열 (0) | 2023.01.21 |
프로그래머스 알고리즘 Level1 코틀린 2023 KAKAO BLIND RECRUITMENT 개인정보 수집 유효 기간 (0) | 2023.01.21 |
프로그래머스 입문 알고리즘 문제 정리 - 코틀린(Kotlin) (0) | 2023.01.21 |