코딩하는 해달이

[Java/Kotlin] Lv1. 랜덤 닉네임 생성 본문

개인 공부/프로그래머스

[Java/Kotlin] Lv1. 랜덤 닉네임 생성

코딩하는 해달 2024. 8. 6. 18:03

랜덤 닉네임 생성

사용자는 최소 27가지 이상의 닉네임 중 하나를 랜덤으로 출력 할 수 있습니다. (아래의 키워드를 사용해주세요!)

  • 기철초풍, 멋있는, 재미있는
  • 도전적인, 노란색의, 바보같은
  • 돌고래, 개발자, 오랑우탄

코드

import java.util.*

fun main() {
    println(randomNickName())
}

fun randomNickName(): String {
    val nickNameList: List<List<String>> = listOf(
        listOf("기절초풍", "멋있는", "재미있는"),
        listOf("도전적인", "노란색의", "바보같은"),
        listOf("돌고래", "개발자", "오랑우탄")
    )
    var result: String = ""

    for (i in 0..2) {
        val r = Random().nextInt(3)
        result += nickNameList[i][r] + " "
    }

    return result
}

과제 수행 중 공부한 내용

Kotlin으로 코드를 짰는데 필요한 내용들을 정리해보겠다.

1. 변수 선언

기본 형태
val/var 변수명: 변수 타입 = 초기값​

val/var
var(variable) = 읽기/쓰기가 가능한 일반 변수[가변 변수]
val(valuable) = 읽기만 가능한 변수 (Java의 final과 같다[불변 변수])

변수명
변수가 무엇을 의미하는지 알 수 있게 이름을 정하고 명명규칙은 여러 규칙 중 카멜 케이스(Camel Case)를 자주 사용함

변수 타입
코틀린에는 Non-null 타입과 Nullable 타입이 존재한다.
null을 값으로 가질 수 있으면 Nullable 타입, null을 값으로 가질 수 없으면 Non-null 타입을 명시해주어야한다.
코드를 작성할 때는 '?'를 사용해 구분한다.
var name: String = null // error
var name: String? = null​

이 문제를 해결할 때는 List타입과 String타입을 사용했다.

2. 함수 선언

기본 형태
fun 함수명(인자): 리턴타입 {
	return 값
}​

fun
function을 의미하며 선언되는 인자가 함수임을 나타낸다

함수명
함수가 어떤 기능을 수행하는지를 잘 나타낼 수 있는 함수명을 작성함 주로 카멜케이스(Camel Case)를 사용해서 선언한다.

인자
함수가 기능을 수행하는데 사용되는 인자를 명시한다.
인자는 변수명: 변수타입으로 나타내고 여러개의 인자를 추가할 수 있다.

리턴타입
함수가 기능을 수행 한 후 반환하는 값의 타입을 정해주어야한다.
반환값이 없는 함수의 경우 Unit으로 명시하거나 생략가능하다.

3. 반복문

기본 형태
for (아이템 in 컬렉션) {
	내용
}

아이템
컬렉션 내부를 순회하며 요소를 가져온다.

컬렉션
코틀린은 Collection 인터페이스가 있으며 이를 구현한 클래스로는 List와 Set 등이 있고 읽기만 가능하다는 특징이 있다.
또한 컬렉션 자리에는 MutableCollection 인터페이스도 적용이 가능한데 이를 구현한 클래스는 MutableList와 MutableSet 등이 있고 읽기와 쓰기가 둘 다 가능하다는 특징이 있다.

4. Random

난수를 생성하는 여러 방법 중 java.util.Random 클래스를 사용했다.
Random() 클래스의 nextInt() 메서드를 사용했는데 이 메서드는 Int 형의 난수를 생성하고 거의 동일한 확률로 생성되는 특징이 있으며 이 메서드를 통해 생성된 난수는 '의사 난수'(알고리즘에 의해 생성된 난수) 이다.

 

반응형
Comments