RNA를 DNA로 바꾸기
DNA 가닥이 주어지면 RNA 보체를 돌려줍니다
DNA와 RNA 가닥은 모두 핵산 염기 서열입니다.
DNA에서 발견되는 4 개의 뉴클레오타이드는 아데닌 ( A ), 시토신 ( C), 구아닌 ( G ) 및 티민 ( T )입니다.
RNA에서 발견되는 4 개의 뉴클레오티드는 아데닌 ( A ), 시토신 ( C ), 구아닌 ( G ) 및 우라실 ( U )입니다.
DNA 가닥이 주어지면, 전사 된 RNA 가닥은 각 뉴클레오타이드를 보체로 대체하여 형성됩니다 :
G
->C
C
->G
T
->A
A
->U
TestCode
해결안 1) stringBuilder
stringBuilder에 조건마다 스트링을 추가합니다.
해결안 2) map, when , joinTostring
}.joinToString(separator = "")
1) String.map 함수(리턴값 list)로 각인덱스의 char를 when에 넣어줍니다.
2) when 안에서 DNA를 RNA로 바꿔주고 , 나머지는 들어온값 그대로 보냅니다.
3) joinToString 함수를 이용하여 list를 String으로 변환합니다.
해결안 3) map, when , joinTostring
fun transcribeToRna(input: String): String = input.map { dnaToRna[it] }.joinToString(separator = "")
1) map을 정의합니다
2) String.map{}으로 각 인덱스의 char를 map함수의 key로 넣어주고 , value값을 list로 리턴합니다.
3) joinToString으로 list를 String으로 변환합니다.
해결안 4) fold 함수
dna.fold("") { rna, nucleotide -> rna + trans(nucleotide.toUpperCase()) }
1) String.fold(초기화할값){ R,T -> R}을 호출합니다. 초기화할 값으로 ""을 넣어주고 , 리턴할 값은 rna, 받는값 T(nucleotide)는 dna 입니다 .
2) trans 함수에 T를 대문자로 넣어주고, 그 리턴값을 계속하여 rna에 더합니다
String.map
지정된 변환 함수를 원의 char 순서의 각 문자에 적용한 결과를 포함한리스트를 돌려줍니다 .
joinToString
- joinToString 함수 원형
- Array(ByteArray,CharArray,IntArray,DoubleArray..등) 나 반복자(Iterator)에서 쓸수 있습니다.
- 컬렉션의 원소 사이에 구분자(Separator)를 추가하고, 접두사(Prefix)와 접미사(Postfix)를 추가 할 수 있습니다.
콜렉션이 커질 수있는 경우, 음수가 아닌 limit 값을 지정할 수 있습니다 .이 경우 첫 번째 제한 요소 만 추가되고 잘린 문자열 (기본값은 "...")이 뒤에옵니다 . (truncated)
- joinToString Example
println(chars.joinToString(limit = 5, truncated = "...!") { it.toUpperCase().toString() }) // A, B, C, D, E, ...!
참고 1 joinToString -http://tech.javacafe.io/2018/10/14/%EC%BD%94%ED%8B%80%EB%A6%B0%EC%8A%A4%ED%84%B0%EB%94%94_3%EC%9E%A5_%EC%A0%95%EB%A6%AC/
참고 2 kotlin 공식문서 joinToString - https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/join-to-string.html
String.fold(initial:R){R,T->R} 함수
fold 함수의 원형
inline fun <T, R> Sequence<T>.fold(
initial: R,
operation: (acc: R, T) -> R
): R
적산 값으로 시작 초기 값 및인가 동작을 전류 누산기 값 및 각 소자에 왼쪽에서 오른쪽으로한다.
즉 누산기 같은 역할입니다. RxJava의 reduce와 비슷합니다 . 값을 계속 더해줄수 있습니다 .
fold는 겹이라는 뜻입니다.
'Kotlin > Exercise' 카테고리의 다른 글
우주 시대 - 행나이를 주었을때, 나이를 초로 바꾸어보기 (2) | 2019.03.09 |
---|---|
10억초 더하기 (2) | 2019.03.03 |
Twofer - 스트링 리턴하기 (2) | 2019.03.03 |
윤년 찾기 (4) | 2019.03.03 |
Hamming -DNA 차이 (2) | 2019.03.03 |
댓글