전체 글

안녕하세요 💻
📕문제 돌 게임은 두 명이서 즐기는 재밌는 게임이다. 탁자 위에 돌 N개가 있다. 상근이와 창영이는 턴을 번갈아가면서 돌을 가져가며, 돌은 1개, 3개 또는 4개 가져갈 수 있다. 마지막 돌을 가져가는 사람이 게임을 이기게 된다. 두 사람이 완벽하게 게임을 했을 때, 이기는 사람을 구하는 프로그램을 작성하시오. 게임은 상근이가 먼저 시작한다. 📕입력 첫째 줄에 N이 주어진다. (1 ≤ N ≤ 1000) 📕출력 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. 🔎문제 해석 이 문제를 푸는 방법은 많을 것 같다. 하지만 몇 번 그림을 그리다 보면 특별한 규칙을 찾을 수 있고, 그 규칙을 통해서 식을 세워보면 쉽게 문제를 풀 수 있다. 우선 문제를 보면 완벽하게 게임을 한다는 말이 있다..
📕Room이란? Room 지속성 라이브러리는 SQLite를 완벽히 활용하면서 원활한 데이터베이스 액세스가 가능하도록 SQLite에 추상화 계층을 제공합니다. 📕Room 사용의 이점 SQL 쿼리의 컴파일 시간 확인 반복적이고 오류가 발생하기 쉬운 상용구 코드를 최소화하는 편의 주석 간소화된 데이터베이스 이전 경로 📕Room 사용에 좋은 예시 공식 문서에 있는 바를 간단하게 요약하면, 유저가 앱을 실행하는 환경이 오프라인이었을 경우에는 이전에 온라인 상태에 있을 때 콘텐츠를 Room을 통해 저장해둔 콘텐츠를 불러와서 보여주며 유저와 상호작용을 하다가 이후에 다시 온라인 상태가 되면 유저가 동작한 내용을 서버와 동기화하도록 하여 서버에 반영되도록 설계하면 이득이라고 한다고 한다. 이러한 점을 고려해서 SQLi..
· Skils/Kotlin
👀학습목표 앞에서 배운 내용을 토대로는 프로퍼티는 어떤 클래스 인스턴스나 파일 퍼사드에 묶인 변수이며, 자바 필드와 비슷하다고 설명했다. 하지만 일반적으로 코틀린 프로퍼티는 일반 변수를 넘어서, 프로퍼티 값을 읽거나 쓰는 법을 제어할 수 있는 훨씬 더 다양한 기능을 제공한다. 이번 글에서는 단순하지 않은 프로퍼티의 의미에 대해서 다룰것이다. 👀학습하기 전에 알면 도움 되는 용어 정리 필드(field) : 클래스 멤버 변수 프로퍼티(Property) : 필드와 게터 세터를 한 번에 묶어서 부르는 단어 📕최상위 프로퍼티 클래스나 함수와 마찬가지로 최상위 수준에 프로퍼티를 정의할 수 있다. 이런 경우 프로퍼티는 전역 변수나 상수와 비슷한 역할을 한다. import kotlin.* val prefix="Hell..
· Skils/Kotlin
📕Null 참조 값 중에서 아무것도 참조하지 않는 경우를 나타내는 특별한 참조값들 여기서 참조는 어떤 할당된 객체도 가리키지 않는 참조를 뜻한다. 다른 참조와 비슷하게 동작하지 않는다. 🔎자바 vs 코틀린 💻자바 모든 참조 타입의 변수에 널을 대입할 수 있지만, 이때 이 참조 타입(하지만 값은 널)에 정의된 메서드나 프로터 리를 사용하려고 하면 NullPointerException(NPE)가 발생. --> 런타임에 프로그램을 실행해봐야 오류를 찾을 수 있는 최악의 오류 💻코틀린 널 값이 될 수 있는 참조 타입과 널 값이 될 수 없는 참조타입을 구분 해고 널 발생 여부를 컴파일 시점으로 옮겨주기 때문에 NullPointerException(NPE) 예외를 상당 부분 막을 수 있다. 📗널이 될 수 있는 타입..
· Skils/Kotlin
📕멤버 가시성 가시성은 클래스 멤버마다 다르게 지정할 수 있다. 즉, 각각 어떤 영역에서 쓰일 수 있는지 결정할 수 있다. 🔎가시성 지정이 클래스 정의 시 중요한 부분인가? 가시성을 사용해 구현과 관련한 세부사항을 캡슐화함으로써 외부 코드로부터 구현 세부사항을 격리시킬 수 있기 때문이다. 코틀린에서는 클래스 멤버의 가시성을 다음과 같은 변경자 키워드로 지정할 수 있다. public(공개) : 멤버를 어디서나 볼 수 있다. 디폴트 가시성이 바로 public이다. 따라서 명시적으로 pulic을 표기할 필요는 없다. internal(모듈 내부) : 멤버를 멤버가 속한 클래스가 포함된 컴파일 모듈 내부에서만 볼 수 있다. protected(보호) : 멤버를 멤버가 속한 클래스와 멤버가 속한 클래스의 모든 하위 ..
· Skils/Kotlin
📕클래스 💡클래스의 기본적인 형태 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배가 되고 길이는 절반이 될 것이다. 종이 접기를 여러 번 했을 때 (안접을 수도 있다), 동호는 종이를 다시 피기로 했다. 그러고 나서 다시 접고 이렇게 놀고 있었다. 옆에서 보고 있던 원룡이는 동호를 위해 종이를 접어서..
· Skils/Kotlin
코틀린의 예외처리는 자바의 접근 방법과 아주 비슷하다. 함수는 정상 종료, 즉 어떤 값을 반환하거나 비정상적으로 오류가 발생한 경우 예외를 던질(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..
재한
짜이한