[Kotlin] map 예제

Jean·2023년 7월 27일
0

//과제 : 국가별 수도를 관리하는 맵 구성 ex) "대한민국" -> "서울"
//map 어떻게 하는걸까용?

fun main () {
var map = mapOf("대한민국" to "서울", "미국" to "워싱턴")
println(키값을 쓰면 value값이 출력됨) 

//여기까지가 내가 기억나는 부분 보충하자면,

fun main () {
val name = mapOf(1 to "Kim", 3 to "Park") 
for ( i in name.keys) {
println(name.get(i))}
//위 list와 비교해서 for {} 있고 없는데 상관 없음 

//2. 수정가능한 맵 
fun main () {
var name = mapOf(1 to "Kim", 3 to "Park") 
name.put(2, "Hong")
for ( i in name.keys) {
println(name.get(i))}

//2-1. +-를 이용하는 방법 
fun main () {
var name = mapOf(1 to "Kim", 3 to "Park") 
var newName = name - 3
for(i in newName.keys) {
println(newName.get(i)} }
// 새 변수 선언하고 - 3 
//반복분ㄴ에서 새 변수 반복하기 

//대한민국이라는 키값을 입력했을 때 수도인 value값을 나오게 하는 map을 만들라는건가?
//알고리즘에서 배웠었는데 어제 O(1)을 가지는 map, 알고리즘 한번 더 보고오자

fun main() {
    // Map 생성
    val ages = mapOf(
        "Alice" to 25,
        "Bob" to 28,
        "Charlie" to 29
    )

    // get() 메서드를 사용하여 키를 이용하여 값을 가져오기
    val bobAge = ages.get("Bob")
    val charlieAge = ages.get("Charlie")

    // 인덱스 연산자 []를 사용하여도 값 가져오기 가능
    val aliceAge = ages["Alice"]

    println("Bob's age: $bobAge")
    println("Charlie's age: $charlieAge")
    println("Alice's age : $aliceAge")
}
//출력
Bob's age: 28
Charlie's age: 29
Alice's age : 25
//

//이렇게 작성하면 할 수 있을 것 같다. 맵 만들고, .get() 메서드를 해서 키값을 가져오는 함수를 만들어야 한다.
//$country를 통해 capital 값을 출력해내는 함수

//국가별 수도를 관리하는 맵 구성 ex) "대한민국" -> "서울"
//main 함수 열기 
//main 함수에서 새 변수(map) 선언 후 mapOf("대한민국" to "서울", "미국" to "워싱턴", "일본" to "도쿄") 만들기
//matchcapital mapOf를 받는 함수 열기
//matchcapital 함수에서  capital이라는 변수를 선언하고 get함수를 통해서 key값(country)를 넣으면 value 값 추출
//main함수에서 "대한민국" 출력하기
fun main () {
    var map = mapOf("대한민국" to "서울", "미국" to "워싱턴", "일본" to "도쿄")
    println(matchcapital("대한민국"))
}

fun matchcapital(input:mapOf) : String {
    var capital = input.get($key)
}

//안해봐도 안다. 이거 안된다.
//key값을 불러올 수 가 없다
//일단 예제와 똑같이 만들어보기로 한다. 선생님이 원하는게 이게 맞는지 잘모르겠다. 관리하는 맵 구성이라니.. 관리하는 이란 말이 좀 두루뭉술하다고 생각한다.

//국가별 수도를 관리하는 맵 구성 ex) "대한민국" -> "서울"
//main 함수 열기 
//main 함수에서 새 변수(map) 선언 후 mapOf("대한민국" to "서울", "미국" to "워싱턴", "일본" to "도쿄") 만들기
//matchcapital mapOf를 받는 함수 열기
//matchcapital 함수에서  capital이라는 변수를 선언하고 get메소드를 통해서 key값(country)를 넣으면 value 값 추출
//main함수에서 "대한민국" 출력하기
fun main () {
    var map = mapOf("대한민국" to "서울", "미국" to "워싱턴", "일본" to "도쿄")
    println(matchcapital("대한민국"))
    
 fun matchcapital(input: mapOf<String>) : String {
     var key = 
     var capital = input.get("$key")
 	
 }
return  capital
}

Unresolved reference: matchcapital
Unresolved reference: mapOf
Unresolved reference: key
A 'return' expression required in a function with a block body ('{...}')
Unresolved reference: capital

//일단 여기까지 작성해보았다. 아무래도 key값을 어떻게 써야할지 모르겠다.
//여기까지 작성하고 run을 했다. 일단 return 위치를 수정했다. 스코프가 잘못되어있었다.
//mapOf가 아니라길래 MapOf로 변경했다. list처럼 대문자를 쓰나 싶어서...

//국가별 수도를 관리하는 맵 구성 ex) "대한민국" -> "서울"
//main 함수 열기 
//main 함수에서 새 변수(map) 선언 후 mapOf("대한민국" to "서울", "미국" to "워싱턴", "일본" to "도쿄") 만들기
//matchcapital mapOf를 받는 함수 열기
//matchcapital 함수에서  capital이라는 변수를 선언하고 get메소드를 통해서 key값(country)를 넣으면 value 값 추출
//main함수에서 "대한민국" 출력하기
fun main () {
    var map = mapOf("대한민국" to "서울", "미국" to "워싱턴", "일본" to "도쿄")
    println(matchcapital("대한민국"))
    
 fun matchcapital(input: MapOf<String>) : String {
     var key = 
     var capital = input.get("$key")
	return  capital
}

//수정 후 이 상태로 gpt에게 가본다.

// 국가별 수도를 관리하는 맵 구성 ex) "대한민국" -> "서울"
// main 함수 열기
// main 함수에서 새 변수(map) 선언 후 mapOf("대한민국" to "서울", "미국" to "워싱턴", "일본" to "도쿄") 만들기
// matchcapital mapOf를 받는 함수 열기
// matchcapital 함수에서 capital이라는 변수를 선언하고 get 메소드를 통해서 key 값(country)를 넣으면 value 값 추출
// main 함수에서 "대한민국" 출력하기

fun main() {
    val map = mapOf("대한민국" to "서울", "미국" to "워싱턴", "일본" to "도쿄")
    println(matchcapital(map, "대한민국"))
}

fun matchcapital(input: Map<String, String>, country: String): String? {
    return input[country]
}

//String 뒤에 물음표는뭐니..? null값 때문인가? 맞다
// get 대신 []을 사용했군
//ㅎㅎlist처럼 쓰면 될거라고 생각했는데 맵은 저렇게 쓰나보다
//input하는 맵이 string pair인걸 알려주고, country:String? 이건 뭐지?
//그리고main에서도 map, "대한민국" 오 이해했다.
//main(map, 변수) --> matchcapital(map, 변수)를 넣으면String? 으로 반환한다. 아마 input.get(country)해도 될듯 하다 오케이 이해했음 다른 사람 코드도 보러가자
//엥...? 그냥 예시랑 똑같이 했군..

//챗지피티
//국가별 수도를 관리하는 맵 구성 ex) "대한민국" -> "서울"
//main 함수 열기 
//main 함수에서 새 변수(map) 선언 후 mapOf("대한민국" to "서울", "미국" to "워싱턴", "일본" to "도쿄") 만들기
//matchcapital mapOf를 받는 함수 열기
//matchcapital 함수에서  capital이라는 변수를 선언하고 get메소드를 통해서 key값(country)를 넣으면 value 값 추출
//main함수에서 "대한민국" 출력하기
fun main () {
    var map = mapOf("대한민국" to "서울", "미국" to "워싱턴", "일본" to "도쿄")
    println(matchcapital(map, "대한민국"))
}
    
 fun matchcapital(input: Map<String, String>, country: String) : String? {
	return  input.get(country)
}
//출력: 서울

//이렇게 완성은 시켰는데 map이 null값을 가지나 물음표 안붙이면 안된다고한다.
//map에 없는 키값(예: 중국)을 입력하면null이라고 뜬다.
//대충 안정성을 위해 존재하지 않는 키값을 넣었을 때 null을 출력하려고 하는거 같다. 위의 예시처럼

profile
아 왜 안돼

0개의 댓글