전체 글

안녕하세요 💻
· Skils/Kotlin
🔎오버 로딩 이름이 같은 함수를 여러 개 작성할 수 있는 기능 🛑주의할 점 컴파일러가 어떤 함수를 호출해야 할지 구분할 수 있도록 오버 로딩한 함수의 파라미터 타입을 구분해줘야 한다. ⭕예를 들어 다음 두 함수는 올바른 오버 로딩을 구성한다. fun readInt()= readLine()!!.toInt() fun readInt(radix : Int)= readLine()!!.toInt(radix) ❌다음 두 함수는 컴파일 오류가 발생한다. 왜일까? 두 함수는 반환 값만 다르고 파라미터의 타입은 같기 때문에 컴파일 오류가 발생하는 것이다! 이렇게 컴파일러는 다음과 같은 오버 로딩 해소 규칙을 따른다. 파라미터의 개수와 타입을 기준으로 호출할 수 있는 모든 함수를 찾는다. 덜 구체적인 함수를 제외시킨다. 규..
📕문제 n(2 ≤ n ≤ 100) 개의 도시가 있다. 그리고 한 도시에서 출발하여 다른 도시에 도착하는 m(1 ≤ m ≤ 100,000) 개의 버스가 있다. 각 버스는 한 번 사용할 때 필요한 비용이 있다. 모든 도시의 쌍 (A, B)에 대해서 도시 A에서 B로 가는데 필요한 비용의 최솟값을 구하는 프로그램을 작성하시오. 📕입력 첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 주어진다. 버스의 정보는 버스의 시작 도시 a, 도착 도시 b, 한 번 타는데 필요한 비용 c로 이루어져 있다. 시작 도시와 도착 도시가 같은 경우는 없다. 비용은 100,000보다 작거나..
· Skils/Kotlin
🔎함수 : 입력(파라미터)을 받아서 자신을 호출한 코드 쪽에 출력 값을 반환할 수 있는 재사용 가능한 코드 블록이다. 아래 사진은 원의 넓이를 구하는 함수이다. 위 사진을 세세하게 뜯어본다면 fun은 함수라는 뜻이고 뒤에 정의가 뒤따라온다. circleArea는 함수의 이름이다. 괄호로 둘러싸여 있는 (radius : Double)은 파라미터 목록이고, 파라미터의 타입을 명시해주면서, 함수를 호출할 때 넘길 수 있는 데이터를 컴파일러에게 알려준다. Double은 반환타입이다. 함수 본문은 {}로 둘러싸여 있는 블록이며 함수의 구현을 기술한다. 🛑함수가 파라미터를 받지 않는다고 해도 파라미터를 감싸는 괄호는 있어야 한다. 코틀린 함수의 파라미터는 무조건 불변이다. 즉 함수 내부에서 변경하지 못한다. 따라서..
· Skils/Kotlin
이번 글에서는 코틀린에서의 배열에 대해 알아볼 것이다. 배열구조를 구현하는 가장 일반적인 코틀린 타입은 Array 이다. val a= emptyArray() //Array원소 0개 val b = arrayOf("Hello", "world") //Array 원소 2개 val c= arrayOf(1,4,9)//Array 원소 3개 호출할 때 원소의 타입을 따로 지정하지 않아도 타입 추론 덕분에 함수 호출의 인자 타입을 알아낼 수 있다. 인덱스를 사용해서 배열의 원소를 만들어내는 방법도 있다. val size= readLine()!!.toInt() //null값이 입력된다면 null을 반환해줘라. val s= Array(size){(it+1) *(it+1)} //각 배열의 인덱스에 (인덱스+1)^2값이 들어가..
📕문제 신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 웜 바이러스에 걸리게 된다. 예를 들어 7대의 컴퓨터가 과 같이 네트워크 상에서 연결되어 있다고 하자. 1번 컴퓨터가 웜 바이러스에 걸리면 웜 바이러스는 2번과 5번 컴퓨터를 거쳐 3번과 6번 컴퓨터까지 전파되어 2, 3, 5, 6 네 대의 컴퓨터는 웜 바이러스에 걸리게 된다. 하지만 4번과 7번 컴퓨터는 1번 컴퓨터와 네트워크상에서 연결되어 있지 않기 때문에 영향을 받지 않는다. 어느 날 1번 컴퓨터가 웜 바이러스에 걸렸다. 컴퓨터의 수와 네트워크 상에서 서로 연결되어 있는 정보가 주어질 때, 1번 컴퓨터를 통해 웜 바이러스에 걸리게 되는 컴퓨터의 ..
📕문제 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 안전한 영역이 최대로 몇 개가 만들어지는 지를 조사하려고 한다. 이때, 문제를 간단하게 하기 위하여, 장마철에 내리는 비의 양에 따라 일정한 높이 이하의 모든 지점은 물에 잠긴다고 가정한다. 어떤 지역의 높이 정보는 행과 열의 크기가 각각 N인 2차원 배열 형태로 주어지며 배열의 각 원소는 해당 지점의 높이를 표시하는 자연수이다. 예를 들어, 다음은 N=5인 지역의 높이 정보이다. 6 8 2 6 2 3 2 3 4 6 6 7 3 3 2 7 2 5 3 6 8 9 5 2 7 이제 위와 같은 지역에 많은 비가 내려서 높이..
📕문제 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 프로그램을 작성하시오. 📕입력 첫 번째 줄에 수빈이가 있는 위치 N과 동생이 있는 위치 K가 주어진다. N과 K는 정수이다. 📕출력 수빈이가 동생을 찾는 가장 빠른 시간을 출력한다. 💡문제 해석 문제를 보면 갈 수 있는 "최소"의 시간을 요구하고..
📕문제 지구 온난화로 인하여 북극의 빙산이 녹고 있다. 빙산을 그림 1과 같이 2차원 배열에 표시한다고 하자. 빙산의 각 부분별 높이 정보는 배열의 각 칸에 양의 정수로 저장된다. 빙산 이외의 바다에 해당되는 칸에는 0이 저장된다. 그림 1에서 빈칸은 모두 0으로 채워져 있다고 생각한다. 2 4 5 3 3 2 5 2 7 6 2 4 그림 1. 행의 개수가 5이고 열의 개수가 7인 2차원 배열에 저장된 빙산의 높이 정보 빙산의 높이는 바닷물에 많이 접해있는 부분에서 더 빨리 줄어들기 때문에, 배열에서 빙산의 각 부분에 해당되는 칸에 있는 높이는 일 년마다 그 칸에 동서남북 네 방향으로 붙어있는 0이 저장된 칸의 개수만큼 줄어든다. 단, 각 칸에 저장된 높이는 0보다 더 줄어들지 않는다. 바닷물은 호수처럼 빙..
📕문제 철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자모양 상자의 칸에 하나씩 넣은 다음, 상자들을 수직으로 쌓아 올려서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 하나의 토마토에 인접한 곳은 위, 아래, 왼쪽, 오른쪽, 앞, 뒤 여섯 방향에 있는 토마토를 의미한다. 대각선 방향에 있는 토마토들에게는 영향을 주지 못하며, 토마토가 혼자 저절로 익는 경우는 없다고 가정한다. 철수는 창고에 보관된 토마토들이 며칠이 지나면 다 익게 되는지 그 최소 일수를 알고 싶어 ..
재한
짜이한