https://www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 난이도 : 브론즈 1 태그 : 수학, 정수론, 유클리드 호제법 유클리드 호제법 최소공배수와 최대공약수는 유클리드 호제법을 이용해 간단히 구할 수 있습니다. 최대 공약수 (GCD, Greatest Common Divisor) 유클리드 호제법은 명시적으로 기록된 가장 오래된 알고리즘으로써, 위키피디아에서는 이 알고리즘을 아래와 같이 설명하고 있습니다. 2개의 자연수(또는 정식) a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면(단, a>b), a와 b의 최대공약..
https://www.acmicpc.net/problem/18111 18111번: 마인크래프트 팀 레드시프트는 대회 준비를 하다가 지루해져서 샌드박스 게임인 ‘마인크래프트’를 켰다. 마인크래프트는 1 × 1 × 1(세로, 가로, 높이) 크기의 블록들로 이루어진 3차원 세계에서 자유롭게 www.acmicpc.net 난이도 : 실버 2 태그 : 브루트포스, 구현 설명 고르지 못한 땅을 평탄화 하는 문제입니다. 처음에는 높은 블록을 떼서 아래쪽에 넣는 방법을 생각해 봤으나... 한참의 삽질 끝에 마침내 브루트포스 문제인걸 깨달았습니다. 블록의 최소 높이부터 최대 높이까지 모든 경우의 수를 확인하여 평탄화가 된 케이스를 찾으면 됩니다. 코드 val br = BufferedReader(InputStreamRead..
https://www.acmicpc.net/problem/14891 14891번: 톱니바퀴 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net 난이도 : 골드 5 태그 : 구현, 시뮬레이션 설명 구현 문제로써, 문제의 지문을 읽고 그대로 구현하여 풀었던 문제입니다. 각 톱니바퀴(gear라는 이름으로 변수명을 지었습니다) 는 LinkedList를 이용하여 구현하였고, 4개의 톱니가 존재하므로 길이가 4인 배열을 생성 및 초기화 하였습니다. val gear = Array(4) { LinkedList() } 입력값 저장 for (i in ..
뷰 바인딩(View Binding)은 코틀린 코드 상에서 findViewById를 통해 일일히 뷰를 찾아줄 필요 없이, 코틀린 코드 상에서 레이아웃에 더 쉽게 접근할 수 있도록 해주는 기능입니다. 뷰 바인딩 적용 방법은 아래와 같습니다. build.grandle 에 아래 코드 삽입 buildTypes { buildFeatures { viewBinding true } } build.grandle의 buildTypes 부분에 위 코드를 삽입합니다. 코틀린 코드 상에서 xml 참조하기 액티비티는 보통 Kotlin(Java) 파일과 xml 파일이 쌍을 이룹니다. LoginActivity.kt 과 이에 대응되는 레이아웃 파일인 activity_login.xml이 있고, 여기에 뷰 객체인 btn_login을 생성하..
https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 난이도 : 실버 4 알고리즘 분류 : 자료구조, 스택 스택(Stack) 자료구조를 이용하여 풀 수 있는 문제 입니다. 소스코드 import java.io.BufferedReader import java.io.InputStreamReader lateinit var stack: IntArray var ptr = -1 fun main() { val br = BufferedReader(..
안녕하세요. 오늘은 모바일 어플리케이션 개발 방법에 관한 이야기를 해볼까 합니다. '모바일 어플리케이션 개발 방법'이라 하면 여러가지가 떠오르실 텐데요. 언어적 측면에서 생각한다면 Java, Kotlin, Objective - C, Swift가 떠오르시는 분이 계실테고, IDE 관점에서 생각하신다면 안드로이드 스튜디오와 Xcode가, 소프트웨어공학 관점에서 본다면 설계부터 기능명세서, 유지보수 등을 떠올리실 분들도 있겠지요. 그 중에서도 오늘 이야기하고 싶은 주제는 바로 '플랫폼 시각에서 바라본 어플리케이션 개발 방법' 입니다. 스마트폰 플랫폼의 경우 애플의 iOS와 구글의 Android로 양분되어 있습니다. 그에 따라 스마트폰 애플리케이션 역시 iOS와 Android를 각각 개발하고 서비스해야 하지요...
백준 2470 두 용액 난이도 : 골드 5 태그 : 정렬, 이분 탐색, 투 포인터 문제 링크 : https://www.acmicpc.net/problem/2470 2470번: 두 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 1,000,00 www.acmicpc.net 소스코드 import kotlin.math.abs fun main() { val testCase = readLine()!!.toInt() val nums = readLine()!!.toString().trim().split(" ").map { i -> i.toInt()..
애플리케이션을 디자인할때, 사용자에게 몰입감을 줄 수 있도록 특정 화면에서 화면을 가로/세로모드로 변경하는 방법이 있다. 그러나 안드로이드 오레오(Oreo) 버전, 그중에서도 안드로이드 8.0 버전에서 화면 회전 시 에러가 발생할 수 있다. 그에 따른 해결방법으로는 아래와 같은 방법이 있다. 1. Oreo 버전에서 대응코드 삽입 if (Build.VERSION.SDK_INT != Build.VERSION_CODES.O) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } 오레오 버전일때 위와같이 if문으로 감싸 예외처리를 해준다. 그러나 오레오 버전일때 화면회전을 하지 않게 할 뿐이므로 화면회전이 되지않아 근본적인 해결책으로 보기..
var arr1 = Array(3, { Array(3, {0}) }) var arr2 = arrayOf(arrayOf(1, 2, 3), arrayOf(4, 5, 6)) 코틀린 배열의 첫 인상 Java를 주로 사용하던 저로써는 코틀린의 배열은 꽤 낯설었습니다. Java에서는 배열을 생성할 때 int arr[] = new int[3]; 과 같이 어찌보면 간단하게 선언할 수 있는데, 코틀린의 경우 배열을 생성하는 방법도 여러가지 인데다가, 생성 방식 역시 독특함 그 자체라 느꼈습니다. 코틀린의 배열을 좀 더 자유롭고 능숙하게 다를 수 있도록 이 글을 작성하며 배열 사용법을 정리해보았습니다. 코틀린의 배열 선언 방법 1) arrayOf() val arr:Array = arrayOf(1,2,3) val arr2:..
ASCII (American Standard Code for Information Interchange, 미국 정보 교환 표준 부호) 아스키 코드 (ASKII)란 7개의 비트를 사용하여 2^7 = 128,000(0x00)부터 127(0x7F)까지 총 128개의 문자를 표현할 수 있다. (8개 비트중 1개는 오류 검출용 패리티비트로 사용한다.) 미국에서 만든 표준 부호라는 점과 128개의 표현의 제한범위 때문에 오직 알파벳과 각종 연산 기호만 표현 가능하며, 한글, 한자, 히라가나 등은 유니코드를 이용하여 표현한다. 문자를 표시할 때, 영어의 경우 1글자당 1바이트를 사용하지만, 타 언어는 1글자당 2바이트를 사용하는 것 역시 영어는 아스키코드를 사용하지만, 타 언어는 유니코드를 사용한다는 점 때문이다. ..