연습장/프로그래머스

프로그래머스(Kotlin)_ Lv0 (2)

아이른 2024. 3. 19. 10:15

(24.03.19)

  • n의 배수
더보기

class Solution {
    fun solution(num: Int, n: Int): Int {
        var answer: Int = 0
        
        if(num % n == 0){
            return 1    
        }else return 0
    }
}

  • 공배수
더보기

class Solution {
    fun solution(number: Int, n: Int, m: Int): Int {
        var answer: Int = 0
        
        if(number % n == 0 && number % m == 0){
            return 1
        }else return 0
    }
}

  • 출력에 따라 다른 값 반환하기 : sum(), sunOf{}
더보기

class Solution {
    fun solution(n: Int): Int {
        var answer: Int = 0
        
        if(n % 2 == 0){
            for(i in 2..n step(2))
            answer += i*i
        }else {
            for(i in 1..n step(2))
            answer += i 
        }
        return answer
    }
}

프로그래머스(Kotlin)_ 자릿수 더하기 (tistory.com)

 

프로그래머스(Kotlin)_ 자릿수 더하기

1. .sumOf{} 사용. class Solution { fun solution(n: Int): Int = n.toString().toList().sumOf { it.digitToInt() } } sum() : List의 모든 요소의 합을 계산. 모든 숫자 데이터 유형 사용 가능. sumOf{} : 개체 목록 내 특정 필드의

hyelan-note.tistory.com

  • 조건 문자열
더보기

class Solution {
    fun solution(ineq: String, eq: String, n: Int, m: Int): Int {
        var answer: Int = 0
        
        when(ineq+eq){
            ">=" -> answer = if(n >= m) 1 else 0
            "<=" -> answer = if(n <= m) 1 else 0
            ">!" -> answer = if(n > m) 1 else 0
            "<!" -> answer = if(n < m) 1 else 0
        }
        return answer
    }
}

  • flag에 따라 다른 값 반환하기
더보기

class Solution {
    fun solution(a: Int, b: Int, flag: Boolean): Int {
        var answer: Int = 0
        
        if(flag == true){
            answer = a+b
        }else answer = a-b
        return answer
    }
}


(24.03.20)

  • 코드 처리하기
더보기

class Solution {
    fun solution(code: String): String {
        var answer: String = ""
        var mode = true
        
        for(i in 0..code.length-1){
            if(code[i] == '1'){
                mode = !mode
                continue
            }
            if(mode){
                if(i%2 == 0) answer += code[i].toString()
            }else{
                if(i%2 == 1) answer += code[i].toString()
            }
        }
        if(answer.isEmpty()) answer += "EMPTY"
        
        return answer
    }
}

  • 등차수열의 특정한 항만 더하기
더보기

  fun solution(a: Int, d: Int, included: BooleanArray): Int {
        var answer: Int = 0
        
        for(i in 0 until included.size){
            if(included[i]) answer += (a+d*i)
        }
        return answer
    }
}

  • 주사위 게임 2
더보기

class Solution {
    fun solution(a: Int, b: Int, c: Int): Int {
        var answer: Int = 0
        
     if(a != b && a != c && b != c ){
         answer = a + b + c
     }else if(a == b && a ==c){
         answer = (a + b + c) * (a*a + b*b + c*c) * (a*a*a + b*b*b + c*c*c)
     }else{
         answer =(a + b + c) * (a*a + b*b + c*c)
     }
        return answer
    }
}

  • 원소들의 곱과 합 : reduce()
더보기

class Solution {
    fun solution(num_list: IntArray): Int {
        var num1 = 1
        var num2 = 0
        
        for(i in num_list.indices){
            num1 *= num_list[i]
            num2 += num_list[i]
        }
        
        if(num1 < num2*num2) return 1 else return 0
    }
}

//각 원소들을 연산하여 전체 연산의 결과를 반환
//초기값 : 컬렉션의 첫번째 요소
//반환값 : 컬렉션의 자료형
fun <S,T : S> Iterable<T>, reduce{operation : (acc:S,T) -> S) : S

val list = listOf(1,2,3,4,5)
val reduceList = list.reduce{total, v -> total + v}
println(reduceList)//15
  • 이어 붙인 수 : filter{}, forEach{}
더보기

class Solution {
    fun solution(num_list: IntArray): Int {
        val num1 = num_list.filter {it % 2 == 0}.joinToString("").toInt()
        val num2 = num_list.filter {it % 2 == 1}.joinToString("").toInt()
        return num1+num2
    }
}


(24.03.21~26)

  • 마지막 두 원소
    • lastIndex : 문자열의 마지막 인덱스을 알려줌
더보기

class Solution {
    fun solution(num_list: IntArray): IntArray {
        var last = num_list[num_list.lastIndex]
        var last2 = num_list[num_list.lastIndex-1]
        return num_list + if(last > last2) last-last2 else last*2
    }
} 

class Solution {
    fun solution(num_list: IntArray): IntArray {
        var answer = num_list
        val s = num_list.size-1
        //size는 배열의 크기이지만 인덱스가 0부터 시작하기 때문에 0..n-1
        //size-1을 해줌으로써 마지막 인덱스를 지칭하게 됨
        if (num_list[s] > num_list[s-1]) {
            answer += num_list[s] - num_list[s-1]
        } else {
            answer += num_list[s] * 2
        }
        return answer
    }
}
  • 수 조작하기 1
더보기

class Solution {
    fun solution(n: Int, control: String): Int {
        var answer: Int = n
        
        for(i in control.indices){
            when(control[i]){
            'w' -> answer += 1 
            's' -> answer -= 1
            'd' -> answer += 10
                else -> answer -= 10
            }
        }
        return answer
    }
}

  • 수 조작하기 2
더보기

class Solution {
    fun solution(numLog: IntArray): String {
        var answer = ""
        for (i in 1..numLog.lastIndex) {
            when {
                numLog[i] - numLog[i - 1] == 1 -> answer += "w"
                numLog[i] - numLog[i - 1] == -1 -> answer += "s"
                numLog[i] - numLog[i - 1] == 10 -> answer += "d"
                numLog[i] - numLog[i - 1] == -10 -> answer += "a"
            }
        }
        return answer
    }
}

  • 수열과 구간 쿼리 3
더보기

class Solution {
    fun solution(arr: IntArray, queries: Array<IntArray>): IntArray {
        var answer: IntArray = intArrayOf()

        for (q in queries) {
            var a = arr[q[0]]
            var b = arr[q[1]]
            arr[q[0]] = b
            arr[q[1]] = a
        }
        return arr
    }
}