본문 바로가기
개발노트/프로그래머스

배열의 유사도 코틀린

by 시계속세상은아직돌아가는중 2023. 7. 31.

https://school.programmers.co.kr/learn/courses/30/lessons/120903

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

fun main() {
    var s1 = arrayOf("a","b","c")
    var s2 = arrayOf("com","b","d","p","c")
    var s3 = mutableListOf<String>()

    for(i in s1){
        for (j in s2)
        {
            if (i == j ){
                s3.add(j)
            }
        }
    }
    println("${s3.size}")

}
class Solution {
    fun solution(s1: Array<String>, s2: Array<String>): Int {
        var answer: Int = 0
        var s3 = mutableListOf<String>()
        for(i in s1){
            for(j in s2){
                if( i ==j){
                    s3.add(j)
                }
            }
        }
        answer =s3.size
        return answer
    }
}

해당 문제는 상당히 간단하게 풀 수 있다.

 

중첩 for문으로 s1과 s2의 배열을 비교한 뒤 중복된 배열의 요소를 리스트 s3에 저장한 뒤 s3의 size를 반환하면 된다.

즉 answer = s3.size로 하면 바로 해결되는 문제다.

 

다른 방식으로도 풀 수 있는데

fun main() {
    var s1 = arrayOf("a","b","c")
    var s2 = arrayOf("com","b","d","p","c")
    var s3=0

    for(i in s1){
        for (j in s2)
        {
            if (i == j ){
                s3++
            }
        }
    }
    println("${s3}")

}

s3를 list가 아닌 int형 변수로 두고 0부터 시작해서 if탐색이 끝날 때 마다 ++를 해서 빈도를 찾을 수 있다.

이는 빈도수만 찾기에는 int가 좀 더 알맞는 형태일 것 이다.