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

분류 전체보기204

[Kotlin] 백준 1654 : 랜선 자르기 문제 링크 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 문제 해설 2805 - 나무 자르기와 유사한 이진 탐색 문제다. 차이점은 목표치와 동일하면 바로 종료할 수 있던 나무 자르기와 달리 이 문제는 목표치(필요한 랜선의 개수)에 도달하더라도 랜선의 길이를 최대로 하기 위해 계속 검사를 해야한다는 점이다. Code fun main() = with(System.`in`.bufferedReader()) { val (k, n) = readLine().split(' ').map { it.. 2022. 12. 3.
[Kotlin] 백준 1874 : 스택 수열 문제 링크 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 문제 해설 문제를 이해하기만 하면 스택을 이용하여 손쉽게 풀 수 있다. 예제 입출력의 경우를 예로 들어 보자. 4, 3, 6을 수열에 넣기 위한 동작을 그림으로 표현하면 다음과 같다. 그림에 대해 설명하자면 처음에 수열에 4를 추가해야 하는데 스택에 4가 없기 때문에 1, 2, 3, 4를 차례대로 삽입한다. 이후 스택의 맨 위에 있는 4를 제거하여 수열에 추가한다. 다음.. 2022. 12. 2.
[Kotlin] 백준 2108 : 통계학 문제 링크 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 문제 해설 주어진 입력으로부터 제시된 값들을 구하면 된다. 1, 2, 4는 손쉽게 구할 수 있지만, 최빈값을 구하고 최빈값이 여러개일 때 두 번째로 작은 값을 구하는 부분은 조금 생각을 해봐야 한다. 최빈값을 구하기 위해 수가 나타나는 빈도를 저장할 별도의 배열을 생성한다. 그리고 N개의 수를 입력받으면서 빈도를 저장할 배열에서 입력하는 수 + 4000을 인덱스로 하는 요소값을 1씩 증가시킨다. N개의 수 입력이 끝났다면 빈도수를 저장한 배열의 최대값이 2개 이상인.. 2022. 12. 2.
[Kotlin] 백준 4949 : 균형잡힌 세상 문제 링크 4949번: 균형잡힌 세상 하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 각 줄은 마침표(".")로 끝난다 www.acmicpc.net 문제 해설 스택을 이용하여 풀 수 있는 괄호 문제다. 문자열에서 괄호 외의 다른 문자는 모두 무시하고 괄호의 경우만 계산하면 되는데 모든 괄호가 짝을 이루되, 5번의 조건과 같이 괄호 내부에서도 괄호가 짝을 이뤄야 한다. 예를 들어 "[(])"의 경우는 대괄호 안에 소괄호는 왼쪽과 오른쪽이 모두 존재하지만 대괄호 사이에는 왼쪽 소괄호가, 소괄호 사이에는 오른쪽 대괄호가 있어서 짝을 이루지 못하므로 균형잡힌 문자열이 아니다. 스택을.. 2022. 12. 2.
[Kotlin] 백준 2805 : 나무 자르기 문제 링크 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 문제 해설 상근이가 M미터 이상의 나무를 가져가면서 가져가는 나무의 양이 최소가 되는, 즉 절단기의 높이 H의 최대값을 구해야 한다. 단순하게 모든 경우를 하나씩 체크할 수도 있겠지만 나무의 최대 높이가 무려 10억이고 최대 나무의 수도 100만이나 되기 때문에 이렇게 하면 1초에 1억회의 계산을 한다고 해도 최대 1000만초(약 116일)라는 엄청난 시간이 걸린다. 따라서 더 효율적인 방법을 찾아야 한다. 이 .. 2022. 12. 2.
Kotlin 기본 문법 6 : 클래스와 접근 지정자 목차 개요 Kotlin은 JVM 기반이면서 객체지향 프로그래밍을 추구하는 언어인 만큼 클래스를 통해 객체를 생성하여 사용한다. 클래스와 객체의 차이는 아래와 같다. 클래스 : 객체들의 공통된 특성을 정의해놓은 틀 객체 : 클래스를 이용하여 생성하여 각자의 속성을 가진 개체 클래스와 객체의 예를 들면 다음과 같다. 자동차라는 클래스가 있으면 차종, 자동차번호 등은 모든 자동차가 공통적으로 갖는 특성이다. 이렇게 공통적으로 갖는 특징적인 값을 필드(field)라고 한다. 또한 모든 자동차는 운행, 세차 등의 행위를 할 수 있는데, 이렇게 공통적으로 갖는 동작 행위를 메소드(method)라고 한다. 이러한 자동차라는 클래스로 차종, 자동차번호 등의 각각의 필드값을 갖는 개체가 바로 객체가 된다. Kotlin은.. 2022. 12. 2.
[IntelliJ] 코드 에디터에 나오는 Usages, Code author 등의 힌트 위치 변경 IntelliJ로 코딩을 하다보면 이와 같은 usages, code author, related problems 힌트가 나타난다. 클래스나 메소드가 얼마나 사용되고 있는지, 누가 작성했는지, 연관된 오류가 몇개인지를 바로 알려주는 등 굉장히 유용한 기능이긴 하지만 이 힌트들이 줄을 차지하는 것처럼 보여서 코딩을 할 때 방해될 수 있으니 위치를 옮겨보자. 3개의 힌트 중 아무 힌트나 우클릭을 하면 메뉴가 나타나는데 Configure...를 클릭하여 설정창을 연다. 설정창을 보면 오른쪽에서 Potiosion을 설정할 수 있다. Default로 설정된 이 값을 Right로 변경한다. 같은 방법으로 Related problems, Usages, Code author 모두 변경하고 OK 버튼을 클릭한다. 한 줄을.. 2022. 12. 1.
[IntelliJ] 유용한 플러그인들 목차 CodeGlance Pro CodeGlance Pro - IntelliJ IDEs Plugin | Marketplace IntelliJ plugin that displays a zoomed out overview or minimap similar to the one found in Sublime into the editor pane. plugins.jetbrains.com VS Code처럼 스크롤바 옆에 현재 파일의 코드를 작게 보여준다. GitToolBox GitToolBox - IntelliJ IDEs Plugin | Marketplace Extends Git Integration with additional features. plugins.jetbrains.com 프로젝트가 Git에 연동되어 .. 2022. 11. 30.