📕멤버 가시성 가시성은 클래스 멤버마다 다르게 지정할 수 있다. 즉, 각각 어떤 영역에서 쓰일 수 있는지 결정할 수 있다. 🔎가시성 지정이 클래스 정의 시 중요한 부분인가? 가시성을 사용해 구현과 관련한 세부사항을 캡슐화함으로써 외부 코드로부터 구현 세부사항을 격리시킬 수 있기 때문이다. 코틀린에서는 클래스 멤버의 가시성을 다음과 같은 변경자 키워드로 지정할 수 있다. public(공개) : 멤버를 어디서나 볼 수 있다. 디폴트 가시성이 바로 public이다. 따라서 명시적으로 pulic을 표기할 필요는 없다. internal(모듈 내부) : 멤버를 멤버가 속한 클래스가 포함된 컴파일 모듈 내부에서만 볼 수 있다. protected(보호) : 멤버를 멤버가 속한 클래스와 멤버가 속한 클래스의 모든 하위 ..
📕클래스 💡클래스의 기본적인 형태 class 키워드 다음에 클래스 이름이 오고 그다음에 본문이 오는 형태로 구성된다. 클래스 본문에는 멤버 정의가 들어있다. class Person{ var firstName = " " var familyName= " " var age =0 fun fullname()= "$firstName $familyName" fun showMe(){ println("${fullname()} : $age") } } 위 클래스 정의는 모든 Person 클래스의 인스턴스마다 firstName, familyName, age라는 프로퍼티와, fullname(), showMe()라는 두 함수가 들어있음을 알려준다. 모든 프로퍼티에서 일반적으로 쓸 수 있는 기능에는 다음과 같이 마치 변수처럼 프로..
📕문제 Moo는 술자리에서 즐겁게 할 수 있는 게임이다. 이 게임은 Moo수열을 각 사람이 하나씩 순서대로 외치면 되는 게임이다. Moo 수열은 길이가 무한대이며, 다음과 같이 생겼다. m o o m o o o m o o m o o o o m o o m o o o m o o m o o o o o Moo 수열은 다음과 같은 방법으로 재귀적으로 만들 수 있다. 먼저, S(0)을 길이가 3인 수열 "m o o"이라고 하자. 1보다 크거나 같은 모든 k에 대해서, S(k)는 S(k-1)과 o가 k+2개인 수열 "m o... o"와 S(k-1)을 합쳐서 만들 수 있다. S(0) = "m o o" S(1) = "m o o m o o o m o o" S(2) = "m o o m o o o m o o m o o o o..
📕문제 동호는 종이를 접는데 옆에서 보고 접으려고 한다. 옆에서 본다는 말은 아래 그림과 같이 본다는 뜻이다. 동호는 종이를 반으로 접을 때, 아래와 같이 두 가지 중 하나로만 접을 수 있다. 오른쪽 반을 반시계 방향으로 접어서 왼쪽 반의 위로 접는다. 오른쪽 반을 시계 방향으로 접어서 왼쪽 반의 아래로 접는다. 아래의 그림은 위의 설명을 그림으로 옮긴 것이다. 한 번의 종이 접기가 끝났을 때, 동호는 종이 접기를 원하는 만큼 더 할 수 있다. 종이 접기를 한번 접을 때 마다 두께는 2배가 되고 길이는 절반이 될 것이다. 종이 접기를 여러 번 했을 때 (안접을 수도 있다), 동호는 종이를 다시 피기로 했다. 그러고 나서 다시 접고 이렇게 놀고 있었다. 옆에서 보고 있던 원룡이는 동호를 위해 종이를 접어서..
코틀린의 예외처리는 자바의 접근 방법과 아주 비슷하다. 함수는 정상 종료, 즉 어떤 값을 반환하거나 비정상적으로 오류가 발생한 경우 예외를 던질(thorw) 수 있다. 예외가 발생한 경우에는 함수를 호출한 쪽에서 예외를 잡아내거나(catch), (잡아내지 않는 경우) 함수 호출 스택의 위로 예외가 전달될 수 있다. 자바와 마찬가지로 오류 조건을 신호로 보내려면 throw 식에 예외 객체를 사용해야 한다. import java.util.* import kotlin.* fun main(){ val str=readLine()!!.toString() println(parseIntNumber(str)) } fun parseIntNumber(s: String): Int{ var num=0 if(s.length !i..
📕문제 흑백 영상을 압축하여 표현하는 데이터 구조로 쿼드 트리(Quad Tree)라는 방법이 있다. 흰 점을 나타내는 0과 검은 점을 나타내는 1로만 이루어진 영상(2차원 배열)에서 같은 숫자의 점들이 한 곳에 많이 몰려있으면, 쿼드 트리에서는 이를 압축하여 간단히 표현할 수 있다. 주어진 영상이 모두 0으로만 되어 있으면 압축 결과는 "0"이 되고, 모두 1로만 되어 있으면 압축 결과는 "1"이 된다. 만약 0과 1이 섞여 있으면 전체를 한 번에 나타내지를 못하고, 왼쪽 위, 오른쪽 위, 왼쪽 아래, 오른쪽 아래, 이렇게 4개의 영상으로 나누어 압축하게 되며, 이 4개의 영역을 압축한 결과를 차례대로 괄호 안에 묶어서 표현한다 위 그림에서 왼쪽의 영상은 오른쪽의 배열과 같이 숫자로 주어지며, 이 영상을..
📕문제 N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1 중 하나가 저장되어 있다. 우리는 이 행렬을 다음과 같은 규칙에 따라 적절한 크기로 자르려고 한다. 만약 종이가 모두 같은 수로 되어 있다면 이 종이를 그대로 사용한다. (1)이 아닌 경우에는 종이를 같은 크기의 종이 9개로 자르고, 각각의 잘린 종이에 대해서 (1)의 과정을 반복한다. 이와 같이 종이를 잘랐을 때, -1로만 채워진 종이의 개수, 0으로만 채워진 종이의 개수, 1로만 채워진 종이의 개수를 구해내는 프로그램을 작성하시오. 📕입력 첫째 줄에 N(1 ≤ N ≤ 37, N은 3k 꼴)이 주어진다. 다음 N개의 줄에는 N개의 정수로 행렬이 주어진다. 📕출력 첫째 줄에 -1로만 채워진 종이의 개수를, 둘째 줄에 0으..
아직 코틀린 문법과 Android Studio 사용법이 미흡하지만 일단 하나 만들어 보는 게 좋을 거 같아서 시작했지만 많이 허술하고 아직 모자랍니다 ㅎㅎ.. 😂😂 앱을 만들고 보니 코드 짜는 것도 어렵지만 이쁘게 꾸미는 것도 엄청 일이라고 느꼈다. 이번 계산기 앱에서 버튼 디자인 및 색상을 입히는 것은 아래 블로그의 코드를 참조했다. https://whyprogrammer.tistory.com/574 [안드로이드] 계산기 어플 앱 만들기 with 코틀린 1. 안드로이드 계산기 어플 앱 만들기 with 코틀린 이번에 진행한 프로젝트는 안드로이드 계산기 어플리케이션 만들기입니다. 간단하게 사용자가 입력한 식을 연산할 수 있고 계산 기록을 확인할 whyprogrammer.tistory.com 🔎계산기의 기능..
📕문제 N×N크기의 땅이 있고, 땅은 1 ×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A [r][c] 명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모든 나라는 1 ×1 크기이기 때문에, 모든 국경선은 정사각형 형태이다. 오늘부터 인구 이동이 시작되는 날이다. 인구 이동은 하루 동안 다음과 같이 진행되고, 더 이상 아래 방법에 의해 인구 이동이 없을 때까지 지속된다. 국경선을 공유하는 두 나라의 인구 차이가 L명 이상, R명 이하라면, 두 나라가 공유하는 국경선을 오늘 하루 동안 연다. 위의 조건에 의해 열어야하는 국경선이 모두 열렸다면, 인구 이동을 시작한다. 국경선이 열려있어 인접한 칸만을 이용해 이동할 수 있으면, 그 나라를 오늘 하..