본문 바로가기
  • 개발하는 곰돌이

분류 전체보기204

Kotlin 기본 문법 번외 : 입력과 출력 목차 개요 이번 포스트에서는 Kotlin의 기본 입력과 출력 방법에 대해 정리하고자 한다. Kotlin의 입력 Kotlin에서의 입력 방법은 크게 다음 3가지로 나뉜다. Java의 Scanner 클래스를 이용한 입력 readLine() 또는 readln()를 이용한 입력 BufferedReader 클래스를 이용한 입력 1. Java의 Scanner 클래스를 이용한 입력 Kotlin은 Java의 클래스를 그대로 가져와서 쓸 수 있기 때문에 Java가 익숙한 경우라면 그냥 Scanner 클래스로 간단하게 입력을 처리할 수 있다. 이 경우에는 사용 방법이 Java와 완전히 동일하기 때문에 Kotlin에 익숙하지 않은 경우라면 이 방법을 사용하는 게 편리할 것이다. 주의할 점은 Kotlin에서는 in이 키워드이.. 2022. 11. 28.
[Kotlin] 백준 1920 : 수 찾기 문제 링크 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 문제 해설 수열이 주어지고 이후 입력되는 숫자들을 주어진 수열에서 찾을 수 있는지를 검사하는 문제다. 일단 이 문제는 첫 입력으로 수열을 받은 후 단순히 in 키워드로 탐색을 하면 \(n\)과 \(m\)이 각각 최대 10만이므로 최악의 경우에 \(100,000\times 100,000=10,000,000,000\)번의 경우를 탐색하게 되어 시간초과가 발생한다. 따라서, 좀 더 효율적인 탐색 방법을 찾아야.. 2022. 11. 26.
[Kotlin] 백준 1065 : 한수 문제 링크 1065번: 한수 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 www.acmicpc.net 문제 해설 1부터 1000까지의 모든 경우를 계산해야하는 완전탐색 문제다. n이 주어졌을 때 n 이하의 수 중 각 자리수가 등차수열을 이루는 수의 총 개수를 구해야한다. 우선 생각해야하는 점은 수열의 항이 2개 이하인 모든 수열은 등차수열이 된다는 점이다. 항이 1개뿐인 경우는 공차가 몇이든 상관 없이 등차수열이 되고, 항이 2개인 경우는 두번째 항 - 첫번째 항의 값이 공차인 등차수열이 되기 때문이다. 예를 들어, X가 31이라면 각 자리를 항으로 하는.. 2022. 11. 25.
[Kotlin] 백준 4673 : 셀프 넘버 문제 링크 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net 문제 해설 완전탐색법으로 풀어야 하는 문제다. 먼저 1~10000까지의 수가 셀프 넘버인지 검사할 배열을 선언한다. 이후 1부터 10000까지 모든 수에 대해 d(n)을 구하고, d(n)이 10,000 이하일 경우 배열의 d(n)번째 값을 true로 변경한다.(true는 d(n)의 생성자 n이 존재하는 경우를 뜻한다.) 이후 배열에서 값이 false인 인덱스를 모두 출력하면 된다. Code fun ma.. 2022. 11. 25.
Kotlin 기본 문법 5 : 배열 목차 개요 전통적인 프로그래밍 언어에서의 배열은 같은 타입의 변수들을 원소로 갖는 유한집합으로 정의된다. Kotlin의 경우에는 기본적인 개념은 비슷하지만 약간의 차이가 있는데 모든 자료형이 참조 타입, 즉 클래스이기 때문에 자료형의 종류에 구애받지 않고 모든 자료형을 담을 수 있는 배열도 정의가 가능하다는 점이다. 이번 포스트에서는 Kotlin의 배열에 대해 정리하고자 한다. Kotlin에서의 배열 선언 Kotlin은 전통적인 프로그래밍 언어들이 일반적으로 사용하는 자료형이나 식별자 뒤에 대괄호를 붙이는 방식으로 배열을 선언할 수 없다. Kotlin에서는 전통적인 방식이 아닌 다른 방법으로 배열을 선언해야 하는데 이 방법으로는 크게 5가지가 있다. arrayOf() 자료형ArrayOf() ex)intA.. 2022. 11. 25.
[Java] 프로그래머스 : 더 맵게 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 힙 트리(heap tree)를 사용하는 문제다. 입출력 예의 설명에 따르면 모든 음식의 스코빌 지수가 K이상이 되지 않았을 때는 문제의 조건에 따라 만들어진 새로운 음식도 섞이는 대상이 될 수 있다. 스코빌 지수가 가장 낮은 두 수를 지속적으로 뽑아내고 새로운 음식을 집어넣으면서 정렬을 해야하는데, 일반적인 배열이나 리스트를 사용하면 음식을 섞을 때마다 매번 정렬을 하게 되면 시간복잡도 상으로 굉장한 손해를 보게 된다. 따라서, 힙 트리를 사용하는 것이 바람직하다. 힙 트리 방식으로 동작하는 대표적.. 2022. 11. 24.
[Kotlin] 백준 1064 : 평행사변형 문제 링크 1064번: 평행사변형 평행사변형은 평행한 두 변을 가진 사각형이다. 세 개의 서로 다른 점이 주어진다. A(xA,yA), B(xB,yB), C(xC,yC) 이때, 적절히 점 D를 찾아서 네 점으로 평행사변형을 만들면 된다. 이때, D가 여러 개 나 www.acmicpc.net 문제 해설 점 3개가 주어졌을 때 만들어지는 평행사변형 중 가장 긴 둘레와 가장 짧은 둘레 길이의 차이를 구하는 문제다. 점 3개가 주어지면 위 그림과 같이 3개의 변이 만들어지는데, 평행사변형은 마주 보는 변의 길이가 같으므로 두 변의 길이의 합에 2를 곱한 값이 둘레의 길이가 된다. 가장 큰 평행사변형의 둘레와 가장 작은 평행사변형의 둘레의 차이만 구하면 되기 때문에 3개의 변 중에 가장 긴 변의 길이에서 가장 짧은.. 2022. 11. 24.
[Kotlin] 백준 1010 : 다리 놓기 문제 링크 1010번: 다리 놓기 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다. www.acmicpc.net 문제 해설 문제의 결론만 따지자면 \( _{m}\mathrm{C}_{n}\)을 구하는 문제다. 강 서쪽의 n개의 사이트를 모두 선택하여 강 동쪽의 임의의 m개의 사이트에 하나씩 연결해야한다. n ≤ m이므로 m개 중 n개를 선택하는 경우의 수와 같다는 것을 알 수 있다. 여기서 다리가 겹쳐질 수 없다는 조건이 있는데 이에 대한 예시는 다음 그림과 같은 두 경우를 들어보겠다. 각 경우를 배열로 나타내면 첫번째는 [1, 2, 3], 두번째는 [2, 3, .. 2022. 11. 24.