티스토리 뷰

※ 인프런 강의: 개복치개발자님의 [입문편] 안드로이드를 위한 코틀린(Kotlin) 문법 강의 내 예제이며, solution #1은 제가 작성한 코드이고, soultion-#2는 강의 예제에서 제시한 코드입니다.


  • ​이메일별 갯수 구하기 - solution #1 - 이중 for와 if 사용
// 여러 이메일이 담긴 리스트가 있어요!
// 저는 구글로 가입한 사람과 네이버로 가입한 사람의 숫자와 그 외의 다른 메일들로 가입한 사람의 숫자를 보고 싶습니다.
// @와 .을 기준으로 어느 사이트에서 들어온 사람들인지 구분을 합니다.
// 아래와 같은 함수를 만들어보세요.

fun main(){

    val emailList1 = arrayListOf<String>(
        "jay@naver.com",
        "john@naver.com",
        "emily@google.com",
        "ken@google.com",
        "minjun@kakao.com"
    )
    
    val result1 = solution(emailList1)
    println("각 도메인별 이메일 갯수:"+ result1+"\n")
    
    val emailList2 = arrayListOf<String>(
        "Aiden@naver.com",
        "Andew@naver.com",
        "Adrian@daum.com",
        "Asher@google.com",
        "Austin@kakao.com",
        "Antonio@google.com"
     )
    val result2 = solution(emailList2)
    println("각 도메인별 이메일 갯수:"+ result2+"\n")
    
}

fun solution(emailList: ArrayList<String>) : Map<String, Int> {
	
    println("전체 이메일 리스트:"+emailList)
    
    var email_domain_list = mutableListOf<String>()
    var unique_email_domain_list = listOf<String>()
    var resultMap = mutableMapOf<String, Int>()
    
    // 전체 리스트의 각 이메일 도메인만 골라서 저장하기
    for( email in emailList ){
        val idemail_list = email.split("@")
        // 이메일 도메인
        val domain = idemail_list[1]
        email_domain_list.add(domain)
    }
    
    // 이메일 도메인 리스트
    println("전체 도메인 리스트:"+ email_domain_list)
    
    // 도메인 중복 제거
    unique_email_domain_list = email_domain_list.distinct()
    println("Unique email domain list :"+unique_email_domain_list)
    
    // 전체 도메인 리스트 중 Unique한 각 도메인 갯수 구하기
    for( i in unique_email_domain_list ){
        var count : Int = 0
        for(j in email_domain_list ){
            // 도메인이 일치할 경우만 카운트
            if(i == j){
                count++
            }
        }
        // 일치하는 각 도메인의 갯수를 해당 도메인을 key로 하는 map의 값으로 저장 
        resultMap[i] = count
    }
    
    return resultMap
}


결과
===========================
전체 이메일 리스트:[jay@naver.com, john@naver.com, emily@google.com, ken@google.com, minjun@kakao.com]
전체 도메인 리스트:[naver.com, naver.com, google.com, google.com, kakao.com]
Unique email domain list :[naver.com, google.com, kakao.com]
각 도메인별 이메일 갯수:{naver.com=2, google.com=2, kakao.com=1}

전체 이메일 리스트:[Aiden@naver.com, Andew@naver.com, Adrian@daum.com, Asher@google.com, Austin@kakao.com, Antonio@google.com]
전체 도메인 리스트:[naver.com, naver.com, daum.com, google.com, kakao.com, google.com]
Unique email domain list :[naver.com, daum.com, google.com, kakao.com]
각 도메인별 이메일 갯수:{naver.com=2, daum.com=1, google.com=2, kakao.com=1}

 

  • ​이메일별 갯수 구하기 - 특정 도메인 및 그 외 갯수 구하기 - solution#1 - count와 filter 사용
// 여러 이메일이 담긴 리스트가 있어요!
// 저는 구글로 가입한 사람과 네이버로 가입한 사람의 숫자와 그 외의 다른 메일들로 가입한 사람의 숫자를 보고 싶습니다.
// @와 .을 기준으로 어느 사이트에서 들어온 사람들인지 구분을 합니다.
// 아래와 같은 함수를 만들어보세요.

fun main(){

    val emailList1 = arrayListOf<String>(
        "jay@naver.com",
        "john@naver.com",
        "emily@google.com",
        "ken@google.com",
        "minjun@kakao.com"
    )
    
    val result11 = solution2(emailList1)
    println("naver,google,그 외 갯수:"+ result11+"\n")
    
    
    val emailList2 = arrayListOf<String>(
        "Aiden@naver.com",
        "Andew@naver.com",
        "Adrian@daum.com",
        "Asher@google.com",
        "Austin@kakao.com",
        "Antonio@google.com"
     )
    val result2 = solution2(emailList2)
    println("naver,google,그 외 갯수:"+ result2+"\n")
    
}

fun solution2(emailList: ArrayList<String>) : Map<String, Int> {
    println("전체 이메일 리스트:"+emailList)
    
    var email_domain_list = mutableListOf<String>()
    var resultMap = mutableMapOf<String, Int>()
    
    // 전체 리스트의 각 이메일 도메인만 골라서 이메일 리스트에 저장하기
    for( email in emailList ){
        val idemail_list = email.split("@")
        // 이메일 도메인
        val domain = idemail_list[1]
        email_domain_list.add(domain)
    }
    
    resultMap["naver.com"] = email_domain_list.count{ it == "naver.com" }
    resultMap["google.com"] = email_domain_list.count{ it == "google.com" }
    resultMap["else"] = email_domain_list.count{ it != "naver.com" && it != "google.com"}
    
    return resultMap
    
} // fun solution2():e


결과
=============================
전체 이메일 리스트:[jay@naver.com, john@naver.com, emily@google.com, ken@google.com, minjun@kakao.com]
naver,google,그 외 갯수:{naver.com=2, google.com=2, else=1}

전체 이메일 리스트:[Aiden@naver.com, Andew@naver.com, Adrian@daum.com, Asher@google.com, Austin@kakao.com, Antonio@google.com]
naver,google,그 외 갯수:{naver.com=2, google.com=2, else=2}
  • ​이메일별 갯수 구하기 - 특정 도메인 및 그 외 갯수 구하기 - solution#2
// 여러 이메일이 담긴 리스트가 있어요!
// 저는 구글로 가입한 사람과 네이버로 가입한 사람의 숫자와
// 그 외의 기메일로 가입한 사람의 숫자를 보고 싶습니다.
// @와 .을 기준으로 어느 사이트에서 들어온 사람들인지 구분을 합니다.
// 아래와 같은 함수를 만들어보세요.

fun main(){

    val emailList1 = arrayListOf<String>(
        "jay@naver.com",
        "john@naver.com",
        "emily@google.com",
        "ken@google.com",
        "minjun@kakao.com")
    val result1 = solution(emailList1)
    println(result1)
    // 결과값 = {naver=2, google=2, else=1}


    val emailList2 = arrayListOf<String>(
        "Aiden@naver.com",
        "Andew@naver.com",
        "Adrian@daum.com",
        "Asher@google.com",
        "Austin@kakao.com",
        "Antonio@google.com")
    val result2 = solution(emailList2)
    println(result2)
    // 결과값 = {naver=2, google=2, else=2}


}

fun solution(emailList: ArrayList<String>) : Map<String, Int> {

    var naverCount = 0
    var googleCount = 0
    var elseCount = 0

    for(email in emailList){
        val domain = email.split("@")[1]
        val emailItem = domain.split(".")[0]
        //println(emailItem)

        if(emailItem == "naver") {
            naverCount += 1 // naverCount++ , naverCount = naverCount + 1
        } else if(emailItem == "google"){
            googleCount += 1
        } else {
            elseCount += 1
        }

    }

    println(naverCount)
    println(googleCount)
    println(elseCount)

    val resultMap = mutableMapOf<String, Int>()

    resultMap["naver"] = naverCount
    resultMap["google"] = googleCount
    resultMap["elseCount"] = elseCount

    return resultMap

}

결과
=====================
2
2
1
{naver=2, google=2, elseCount=1}
2
2
2
{naver=2, google=2, elseCount=2}

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함