티스토리 뷰
※ 인프런 강의: 개복치개발자님의 [입문편] 안드로이드를 위한 코틀린(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}
'Kotlin' 카테고리의 다른 글
Kotlin 공부 - 예제, 연습-#3 - 별 모양 만들기 (0) | 2022.04.15 |
---|---|
Kotlin 공부 - 예제, 연습-#2- 문자열의 숫자 및 홀수 짝수 구분 (0) | 2022.04.15 |
Kotlin 공부 - 자료형, generic, Any/is/as, 지연 초기화(lateinit, lazy) (0) | 2022.04.14 |
Kotlin 공부 - 조건문 if, when (0) | 2022.04.13 |
Kotlin 공부 - 반복문 for, while (0) | 2022.04.13 |
댓글