[A&I Code Camp] Day21

Hood·2024년 10월 7일

A&I Code Camp

목록 보기
21/38
post-thumbnail

✍   Kotlin을 PS 문제 풀기

소속중인 A&I 동아리에서 코딩역량을 강화하고자
코딩캠프를 진행하며 작성한 포스트입니다.
해당 포스트는 kotlin을 기반으로 작성합니다.


소수 판별 알고리즘

이번 주 주제는 소수 판별 알고리즘이며
백준에 하루 한 문제를 풀어가며 작성할 것입니다.
소수 판별 알고리즘
해당 내용은 위 포스트에 작성하였습니다.

1978번

https://www.acmicpc.net/problem/1978

위 문제는 내가 입력할 숫자의 갯수를 먼저 입력해 준 뒤
해당 숫자내의 소수가 있다면 해당 갯수를 다 더해 소수가 몇 개인지 확인하는 문제입니다.

Solve

  1. 저는 먼저 몇 개를 입력할지 input에 입력 받고
    repeat문으로 내가 입력할 숫자를 nums 배열 안에 넣어주었습니다.
  1. isPrime 만들어 x가 1이하 일 경우 소수가 아니기에 false를
    이상일 경우 반복문에 2부터 x의 제곱근까지 한 번이라도 나누어 지면 소수가 아니기에 false
    한 번도 안 나누어지면 소수기에 true를 두어 판별할 수 있는 함수를 만들었습니다.
  1. 이후 반복문안에 nums를 넣어 true가 나오면 소수기에
    소수가 맞다면 result에 1을 더해주는 식으로 구했습니다.
import java.io.StreamTokenizer

fun main() = with(StreamTokenizer(System.`in`.bufferedReader())) {
    fun nextInt() : Int {
        nextToken()
        return nval.toInt()
    }
    val nums = mutableListOf<Int>()
    var result = 0
    val input = nextInt()
    repeat(input){
        nums.add(nextInt())
    }

    fun isPrime(x: Int): Boolean{
        if(x <= 1) return false
        for(i in 2 .. Math.sqrt(x.toDouble()).toInt()){
            if (x % i == 0) return false
        }
        return true
    }

    for(x in nums){
        if(isPrime(x)) result += 1
    }

    println(result)
}


📌 결론

프로그래머스로 문제를 풀다가
백준으로 넘어오니 input과 output을 직접 넣어보고 구하기에
조금 헷갈렸지만 얼른 익숙해져봅시다!

profile
달을 향해 쏴라, 빗나가도 별이 될 테니 👊

0개의 댓글