본문 바로가기

Kotlin82

[Kotlin, B3] 백준 15894번 수학은 체육과목입니다 수학은 체육과목입니다(15894번)Bronze 3#수학 #사칙연산https://www.acmicpc.net/problem/15894 문제 내용  문제 접근도형의 한 변의 길이는 1이다.가장 윗부분의 정사각형은 3이다. 그리고 가장 아래의 정사각형들의 둘레는 양 옆의 변의 길이 2와 바로 위층의 정사각형의 영역을 제외한 양 끝의 0.5씩 해서 1이다. 그리고 마지막 밑변의 길이를 합하면 된다.맨 아래의 정사각형이 3개가 있을 때는 2 + 1 + 3 = 6이 된다. 마지막 층을 제외하면 항상 둘레는 3이 된다는 규칙을 쉽게 찾을 수 있다.입력 예제를 보면 입력이 3으로 주어지는데, 이는 최하단의 정사각형이 3개가 있다는 뜻이다.1층의 정사각형은 양옆(2)과 맨 위(1)해서 둘레는 3이고, 2층은 양옆(2)과.. 2024. 9. 3.
[Kotlin, B3] 백준 3009번 네 번째 점 네 번째 점(3009번)Bronze 3#구현 #기하학https://www.acmicpc.net/problem/3009 문제 내용  문제 접근3개의 점의 좌표가 주어질 때, 축에 평행한 직사각형을 만들기 위해 필요한 네 번째 점을 출력해야 한다.다르게 말하면, 양 변이 평행한 직사각형을 만들기 위해 필요한 네 번째 점을 구해야 한다. 입력 예제들을 보다 보면 쉽게 규칙을 찾을 수 있다.입력 예제 1은 다음과 같다.5 55 77 5// 정답: 7 7 예제 입력 230 2010 1010 20// 정답: 30 10 위 2개의 입력 예제의 정답을 보면 세 좌표에서 1개씩 들어 있는 좌표값이 정답이 되는 것을 볼 수 있다.양 변이 평행한 정사각형을 만들기 위해서는 한 좌표에 x축과 평행한 좌표, y축으로 평행한 좌.. 2024. 9. 2.
[Kotlin, S3] 백준 8911번 거북이 거북이(8911번)Silver 3#구현 #시뮬레이션 문제 내용  문제 접근처음에 거북이가 좌표 0, 0에 있을 때, 이 거북이를 명령어로 움직여서 거북이가 지나간 영역의 사각형의 넓이를 구한다.이 경우에는 거북이가 움직이고 난 좌표 x, y를 모두 구해서 최댓값과 최솟값을 차를 이용해 각 변의 길이를 구하고, x의 거리와y의 거리를 곱해주면 쉽게 구할 수 있다. 우선 명령에 따른 각도 계산 및 이동 결과를 구해야 한다. 각도의 경우는 자신이 편하게 정의하면 된다. 내 경우에는 0, 90, 180, 270으로 구현했다.'L' -> { if (currentAngle == 0) currentAngle = 270 else currentAngle -= 90}'R' -> { if (currentAn.. 2024. 8. 30.
[Kotlin, S4] 백준 1337번 올바른 배열 올바른 배열(1337번)Silver 4#구현 #정렬 #투 포인터 문제 내용  문제 접근문제에서 올바른 배열은 리스트의 원소 5개가 연속적인 값을 가지는 리스트를 뜻한다.정렬되지 않은 리스트가 주어질 때, 리스트를 정렬하고 나서 올바른 배열을 만들기 위해서는 몇 개의 원소를 추가해야 하는지 최소 개수를 출력한다.입력 예제 1을 예로 들어 보면3567리스트 5, 6, 7이 원소로 존재하는데, 5, 6, 7은 이미 연속된 수이기 때문에 2개만 있으면 올바른 배열을 만들 수 있다.3, 4 또는 7, 8이 있으면 된다. 리스트의 원소 하나하나를 연속된 원소의 첫 원소라고 가정하고 올바른 배열을 만들기 위해 추가해야 할 원소의 개수는 최소 0개에서 최대 4개가 된다.이미 올바른 배열인 경우에는 0개일 것이고, 연속.. 2024. 8. 29.
[Android] custom NumberPicker를 string array와 함께 사용하기 내일배움캠프 최종 프로젝트 기록 3  서론어제까지는 BottomSheet의 height를 설정하기 위해 삽질한 것을 포스팅했는데,오늘은 Bottom Sheet에 NumberPicker를 써서 구현한 것을 포스팅해보려 한다.추가적으로 NumberPicker에 string.xml에서 정의한 string array도 함께 사용했다.  NumberPicker 구현우선은 NumberPicker에 사용할 전용 Theme를 만들어 보겠다.NumberPicker에서는 Picker의 text의 색과 size 등등 몇 개의 설정이 불가하기 때문에, Theme로 구현해 줘야 한다.textColor와 size 설정은 1, 2번째 줄에서 이루어지고, colorControlNormal은 NumberPicker에서 선택된 항목과 .. 2024. 8. 28.
[Kotlin, B1] 백준 20632번 유니대전 퀴즈쇼 유니대전 퀴즈쇼(20632번)Bronze 1#구현 #문자열https://www.acmicpc.net/problem/20362 문제 내용  문제 접근정답자의 채팅이 올라오고 그 이전에 정답자와 같은 채팅을 친 사람들이 몇 명인지 구해야 한다.입력은 시간 순서대로 주어지고 정답자가 입력되고 나서 이전에 채팅을 친 사람들 중 정답자와 같은 채팅을 친 사람을 구해야 한다.그러면 입력을 받을 때 정답자가 입력되면 정답자가 몇 번째 채팅에서 입력되었는지, 정답은 무엇인지 확인을 해줘야 한다. 그리고 입력받은 채팅들과 사용자 이름을 모두 List로 2차원 List에 저장해 준다.2차원 List를 거꾸로 돌게 되면 반복의 마지막이 가장 먼저 입력된 값이 되고 가장 빨리 올라온 채팅이 되기 때문에 정답자 이전에 정답을 .. 2024. 8. 28.
[Android] Android에서 BottomSheetDialogFragment의 높이를 최대 높이로 설정하기 내일배움캠프 최종 프로젝트 기록 2  서론이번에는 UI 개발을 할 차례이다.나는 UI개발에서 마이페이지에 사용하는 bottomSheet들의 UI 구성을 맡았다.그리고 이미 구현되어 있는 bottomSheet 틀을 사용해서 구현할 것이다.sheet 틀은 xml로 이미 구현되어 있고, content 부분만 따로 xml로 구현해서 붙여주는 작업을 진행했다.bottomSheet UI의 height 설정 부분에서 삽질을 했던 과정을 글로 적어 보겠다.  BottomSheet를 최대 높이로 설정해서 만들기기존에는 BottomSheet를 최대 높이로 설정해서 띄우려면 BottomSheetBehavior를 사용해야 했다.원래 BottomSheetBehavior를 사용해도 되지만, bottomSheetDialogFrag.. 2024. 8. 27.
[Kotlin, S2] 백준 1912번 연속합 연속합(1912번)Silver 2#다이나믹 프로그래밍https://www.acmicpc.net/problem/1912 문제 내용  문제 접근정수들이 주어지면, 연속된 정수의 합 중의 최댓값을 찾아서 출력한다.시간제한이 1초이고, 정수는 10만 개까지 들어오기 때문에 다이나믹 프로그래밍이 강제된다.이 문제를 다이나믹 프로그래밍으로 풀기 위해서는 어떻게 해야 할까? 입력 예제 1을 예로 들어 보겠다.1010 -4 3 1 5 6 -35 12 21 -1정수를 하나씩 보면서 최댓값을 찾아보자. 첫 번째 수는 10이기 때문에 연속된 수의 합은 10이다.두 번째 수는 -4이다. 연속된 수의 합은 6이다. 6과 -4중에 6이 더 크다.세 번째 수는 3이다. 연속된 수의 합은 9이다. 9와 3중에 9가 더 크다.네 번째.. 2024. 8. 26.
[Kotlin, S2] 백준 2716번 원숭이 매달기 원숭이 매달기(2716번)Silver 2#자료 구조 #트리 #스택 문제 내용  문제 접근입력은 오직 대괄호만 주어진다. 대괄호가 있으면 덩굴이 2개로 분리되는 것이다.각 덩굴에는 동일한 수의 원숭이가 있어야 한다.덩굴은 2개로만 나누어질 수 있다.위 문제의 그림을 보면 각 덩굴 수에 맞는 원숭이들이 매달려 있다. 첫 번째 덩굴의 원숭이 수는 각 덩굴에 4마리씩이다(2+ 2, 1 + 1 + 2).오른쪽의 덩굴의 원숭이 수는 각 덩굴에 2마리씩이다(1 + 1, 2).각 덩굴의 depth가 깊어질수록 필요한 원숭이의 수가 2배씩 늘어나게 된다. 덩굴은 무조건 2개씩으로만 나누어지기 때문에 한 덩굴의 depth가 깊어질수록 다른 덩굴도 깊어진 덩굴의 depth에 따라 늘어난 원숭이 수에 맞게 원숭이를 추가해 줘.. 2024. 8. 25.
[Kotlin] 백준 16506번 CPU CPU(16506번)Silver 5#구현 문제 내용  문제 접근위 표를 참고해서 opcode, rD, rA, rB(#C)가 주어질 때, 문제에 정의된 번역 방법으로 어셈블리어를 번역해서 기계어로 출력한다.각 문제에 필요한 조건들이 뭐가 있는지 정리해 보겠다. 기계어는 총 16개의 0과 1로 이루어져 있다.16개의 수들이 적용되는 조건은 다음과 같다. 1. 0~3번째까지의 수는 opcode에 맞게 구성해 주면 된다. 위 표 참고.2. 4번째 수는 opcode가 C로 끝나면 1, 아니면 03. 5번째 수는 0 고정.4. 6~8번째 수는 rD의 2진수값.5. 9~11번째 수는 rA의 2진수값, NOT의 경우는 0 고정.6.12~15번째 수는 opcode가 C로 끝날 때는 #C의 2진수값, 아니면 rB의 2진수.. 2024. 8. 23.
[Kotlin, S5] 백준 11068번 회문인 수 회문인 수(11068번)Silver 5#수학 #브루트포스 알고리즘https://www.acmicpc.net/problem/11068 문제 내용  문제 접근10진수인 숫자를 입력받을 때, 2진법부터 64진법까지 수를 변환할 때, 변환한 수가 팰린드롬(회문)이면 1을 출력. 아니면 0을 출력하는 문제이다.Kotlin에서 진법 변환을 쉽게 하는 방법은 toString(N), toInt(N)을 쓰는 방법이다.하지만 toString, toInt로 날먹할 수가 없다. 왜냐하면 toString, toInt를 쓰면 아래와 같은 오류가 발생하기 때문이다.Exception in thread "main" java.lang.IllegalArgumentException: radix 37 was not in valid range.. 2024. 8. 23.
[Kotlin, B1] 백준 15629번 Africa Africa(15629번)Bronze 1#구현 문제 내용문제 본문더보기라이언의 고향은 아프리카의 어느 섬이라고 한다. 사자의 서식지는 주로 아프리카의 초원지대로 알려져 있는데, 아쉽게도 아프리카의 섬 중 사자의 서식지 또는 과거에 사자가 서식했던 지역은 없기 때문에 라이언의 고향이 섬이라는 것은 누군가의 착각에 의해 잘못 알려졌을 가능성이 높다. 사실 아프리카 내에 바다로 생각할 만큼 매우 큰 호수가 많아서 섬이었던 걸로 오해했을 가능성도 있다. 아프리카 내의 여러 호수 중 가장 큰 호수는 빅토리아 호로, 동아프리카의 세 나라인 우간다, 케냐, 탄자니아에 걸쳐 있다. 역시 케냐와 탄자니아의 국경에 걸쳐 있는 세렝게티 지역과 거의 맞닿아 있다. 세렝게티는 3만 제곱 킬로미터가 넘는 땅으로 초원 지역과 사바.. 2024. 8. 22.
[Kotlin, S1] 백준 1991번 트리 순회 트리 순회(1991번)Silver 1#트리 #재귀https://www.acmicpc.net/problem/1991 문제 내용  문제 접근입력값을 기반으로 트리를 만들어서 전위, 중위, 후위 순회를 한 결과를 출력해야 한다.트리 문제가 생소한 사람들을 트리를 어떻게 구성해야 하는지부터 난감할 것이다. 내가 그랬다.트리 구성은 문제 본문에 나와 있는 것 그대로 구성해 볼 생각이다.먼저 한 노드의 정보를 표시할 Node 데이터를 구성해 줄 것이다. node에는 value와 left, right 데이터가 존재하도록 구현한다.private data class Node( val value: String, var left: Node?, var right: Node?,)left와 right는 하위 No.. 2024. 8. 21.
[Kotlin, S3] 백준 1904번 01타일 01타일(1904번)Silver 3#다이나믹 프로그래밍https://www.acmicpc.net/problem/1904 문제 내용  문제 접근타일의 구성이 00, 1로 총 2가지가 존재한다. 타일들로 구성해야 하는 자릿수가 N일 때 타일 2종류를 무한대로 사용해서 자릿수가 N인 수를 만들어야 한다.문제 설명에서처럼 N이 4일 때는 0011, 0000, 1001, 1100, 1111 총 5가지의 경우의 수가 존재한다. 먼저 N의 개수에 따라 경우의 수가 몇 개인지 일일이 세서 알아내 보자.위의 표는 자릿수(N)에 따른 00, 1로 나타낼 수 있는 N자리의 수들을 나열한 것이다.어떤 규칙이 보이게 된다.바로 피보나치수열과 동일한 규칙으로 개수가 증가하는 것을 볼 수 있다.N이 3이 될 때부터 피보나치수열을 .. 2024. 8. 20.
[Kotlin, S3] 백준 1002번 터렛 터렛(1002번)Silver 3#수학 #기하학 #많은 조건 분기https://www.acmicpc.net/problem/1002 문제 내용  문제 접근입력 형식을 보면 터렛의 좌표와 마린과의 거리가 나온다. 이를 이용해 원을 이용하는 문제임을 유추할 수 있다.입력 예제 1의 첫 번째 case를 확인해 보자.0 0 13 40 0 37첫 번째 터렛의 좌표가 0, 0이고 마린과의 거리가 13이므로 반지름이 13인 원이라고 생각하면 된다. 첫 번째 터렛을 기준으로 다음과 같이 원을 구성하면 원의 둘레에 해당하는 부분들이 모두 마린이 있을 수 있는 경우의 수인 것이다.두 번째 터렛도 구성해 보자. 두 번째 터렛은 좌표가 40, 0이고 마린과의 거리는 37이다. 두 번째 원은 다음과 같이 구성된다. 그럼 첫 번째 .. 2024. 8. 20.
728x90