분류 전체보기

📕문제 팀 레드시프트는 대회 준비를 하다가 지루해져서 샌드박스 게임인 ‘마인크래프트’를 켰다. 마인크래프트는 1 × 1 × 1(세로, 가로, 높이) 크기의 블록들로 이루어진 3차원 세계에서 자유롭게 땅을 파거나 집을 지을 수 있는 게임이다. 목재를 충분히 모은 lvalue는 집을 짓기로 하였다. 하지만 고르지 않은 땅에는 집을 지을 수 없기 때문에 땅의 높이를 모두 동일하게 만드는 ‘땅 고르기’ 작업을 해야 한다. lvalue는 세로 N, 가로 M 크기의 집터를 골랐다. 집터 맨 왼쪽 위의 좌표는 (0, 0)이다. 우리의 목적은 이 집터 내의 땅의 높이를 일정하게 바꾸는 것이다. 우리는 다음과 같은 두 종류의 작업을 할 수 있다. 좌표 (i, j)의 가장 위에 있는 블록을 제거하여 인벤토리에 넣는다. 인..
· Skils/Kotlin
👀학습목표 객채 선언의 정의 객채 선언의 의미와 객체 선언을 통한 싱글톤 자바 익명 클래스와 비슷한 객체 식 📕객체 선언 코틀린은 어떤 클래스에 인스턴스가 오직 하나만 존재하게 보장하는 싱글턴 패턴을 내장하고 있다. 싱글턴의 선언 방법은 클래스와 비슷한 방법으로 선언한다. [class 대신 object라는 키워드 사용] import java.io.* object Application { val name="My application" override fun toString()=name fun exit(){} } fun describe(app:Application)=app.name //Application은 타입임. fun main(){ println(Application) //Application은 값임...
📕문제 사악한 라이토는 기발한 방법을 이용하여 L(애칭 섊)을 살해한 뒤 데스노트를 다시 손에 넣었다. 라이토는 이제 이 노트에 n명의 이름을 적어 넣으려고 한다. 이때 다음과 같은 조건을 만족시키면서 이름을 적어 넣으려 한다. 우선, 이름을 적어 넣을 때 이미 정해진 순서대로 n명의 이름을 적어 넣어야 한다. 이름을 적을 때도, 노트를 위에서 아래로, 같은 줄에서는 왼쪽 맨 끝에서 오른쪽으로 차례로 적는다고 하자. 또한 이름을 적을 때 각 사람의 이름 사이에 빈칸을 하나씩 두려고 한다. 한 줄을 적다가 그 줄의 끝에 한 사람의 이름이 다 들어가지 않고 잘리게 되면 반드시 새로운 줄에 이름을 써야 한다. 그렇지 않으면 이름이 중간에 잘려서 자칫하면 두 명의 사람이 죽게 된다. 이때, 각 줄의 끝에 사용하..
📕문제 효주는 포도주 시식회에 갔다. 그곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규칙이 있다. 포도주 잔을 선택하면 그 잔에 들어있는 포도주는 모두 마셔야 하고, 마신 후에는 원래 위치에 다시 놓아야 한다. 연속으로 놓여 있는 3잔을 모두 마실 수는 없다. 효주는 될 수 있는 대로 많은 양의 포도주를 맛보기 위해서 어떤 포도주 잔을 선택해야 할지 고민하고 있다. 1부터 n까지의 번호가 붙어 있는 n개의 포도주 잔이 순서대로 테이블 위에 놓여 있고, 각 포도주 잔에 들어있는 포도주의 양이 주어졌을 때, 효주를 도와 가장 많은 양의 포도주를 마실 수 있도록 하는 프로그램을 작성하시오. 예를 들어 ..
📕문제 어떤 동물원에 가로로 두 칸 세로로 N칸인 아래와 같은 우리가 있다. 이 동물원에는 사자들이 살고 있는데 사자들을 우리에 가둘 때, 가로로도 세로로도 붙어 있게 배치할 수는 없다. 이 동물원 조련사는 사자들의 배치 문제 때문에 골머리를 앓고 있다. 동물원 조련사의 머리가 아프지 않도록 우리가 2*N 배열에 사자를 배치하는 경우의 수가 몇 가지인지를 알아내는 프로그램을 작성해 주도록 하자. 사자를 한 마리도 배치하지 않는 경우도 하나의 경우의 수로 친다고 가정한다. 📕입력 첫째 줄에 우리의 크기 N(1≤N≤100,000)이 주어진다. 📕출력 첫째 줄에 사자를 배치하는 경우의 수를 9901로 나눈 나머지를 출력하여라. 🔎문제해석 우선 나는 손으로 할 수 있는 예시까지는 손으로 계산해서 경우의 수를 계..
📕문제 돌 게임은 두 명이서 즐기는 재밌는 게임이다. 탁자 위에 돌 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) 예외를 상당 부분 막을 수 있다. 📗널이 될 수 있는 타입..
재한
'분류 전체보기' 카테고리의 글 목록 (38 Page)