12904번: A와 B 수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수 www.acmicpc.net 문제 수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수빈이는 간단한 게임을 만들기로 했다. 두 문자열 S와 T가 주어졌을 때, S를 T로 바꾸는 게임이다. 문자열을 바꿀 때는 다음과 같은 두 가지 연산만 가능하다. 문자열의 뒤에 A를 추가한다. 문자..
20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net 문제 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부터 2N까지의 번호가 매겨져 있다. 벨트가 한 칸 회전하면 1번부터 2N-1번까지의 칸은 다음 번호의 칸이 있는 위치로 이동하고, 2N번 칸은 1번 칸의 위치로 이동한다. i번 칸의 내구도는 Ai이다. 위의 그림에서 1번 칸이 있는 위치를 "올..
('//'이하 '배준형')은(는) 「개인정보 보호법」 제30조에 따라 정보주체의 개인정보를 보호하고 이와 관련한 고충을 신속하고 원활하게 처리할 수 있도록 하기 위하여 다음과 같이 개인정보 처리방침을 수립·공개합니다. ○ 이 개인정보처리방침은 2023년 1월 1부터 적용됩니다. 제1조(개인정보의 처리 목적) ('//'이하 '배준형')은(는) 다음의 목적을 위하여 개인정보를 처리합니다. 처리하고 있는 개인정보는 다음의 목적 이외의 용도로는 이용되지 않으며 이용 목적이 변경되는 경우에는 「개인정보 보호법」 제18조에 따라 별도의 동의를 받는 등 필요한 조치를 이행할 예정입니다. 제2조(개인정보의 처리 및 보유 기간) ① 은(는) 법령에 따..
인텐트란? 인텐트는 안드로이드 애플리케이션에서 4대 컴포넌트 구성 요소들 간에 통신하는 데 사용되는 객체입니다. 인텐트는 Activity를 실행하는 데 가장 많이 사용되지만 다른 용도도 있습니다. 인텐트 유형에는 암시적 인텐트와 명시적 인텐트가 있습니다. 명시적 인텐트(Explicity Intent): 특정 컴포넌트를 명시하여 실행하는 인텐트 암시적 인텐트(Implicit Intent): 추상적이며 목적지를 명시적으로 지정하지 않고, 수신자가 필터를 통해 처리할 수 있는 인텐트 일반적으로 앱에서 Activity를 표시할 때 명시적 인텐트를 사용합니다. 다만 현재 앱과 관련이 없는 작업의 경우, 예를 들어 다른 애플리케이션과 상호작용하거나, 시스템 기본 앱을 사용하여 특정 작업을 수행할 때 사용됩니다. 명..
14719번: 빗물 첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치 www.acmicpc.net 문제 2차원 세계에 블록이 쌓여있다. 비가 오면 블록 사이에 빗물이 고인다. 비는 충분히 많이 온다. 고이는 빗물의 총량은 얼마일까? 입력 첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치부터 차례대로 W개 주어진다. 따라서 블록 내부의 빈 공간이 생길 수 없다. 또 2차원 세계의 바..
조건 표현식 우리가 코드를 작성할 때 특정 조건에 해당하는 행위만 처리하고 싶을 때가 있습니다. 이를 위해서는 참과 거짓으로 결과를 처리하는 비교연산자와 논리연산자를 알아야 합니다. 비교연산자 연산자 의미 표현식 내부적 실행 > 크다 a > b a.compareTo(b) > 0 = 크거나 같다 a >= b a.compareTo(b) >= 0 = num2) // 출력: false (20은 30보다 작거나 같지 않음) println(num1 b) or (a b) && (a b) and (a < c) 아래는 논리연산자를..
변수와 상수 프로그램 언어 내에서 특정 값을 보관하는 장소는 변수와 상수입니다. 코틀린에서 변수를 정의할 때는 val, var을 사용할 수 있습니다. 상수는 const val 예약어만 사용할 수 있으며 정의할 수 있는 영역도 제한됩니다. 불변변수(val): 한번 저장하면 다시 할당할 수 없는 변수 가변변수(var): 재할당할 수 있는 변수 정의(Declaration): 변수와 상수를 처음으로 만드는 것 참조(Reference): 변수나 상수의 값을 이름으로 조회하는 것 할당(Assignment): 변수나 상수에 초깃값을 저장하는 것 변수와 상수를 정의할 때 사용되는 규칙이 존재합니다. 이는 다음과 같습니다. 변수 소문자나 언더스코어로 시작 첫 문자에는 숫자를 쓰지 않는다. 여러 단어를 연결해 표기할 때 ..
객체란? Kotlin은 객체지향 프로그래밍을 지원하는 프로그래밍 언어입니다. 객체는 속성과 동작을 가지는 개체로 클래스를 통해 정의됩니다. 즉 객체는 해당 객체와 관련이 있는 데이터로 구성된 클래스의 인스턴스입니다. 그렇다면 객체를 만들기 위해서는 일단 클래스가 있어야 합니다. 먼저 클래스를 정의하고 이 정의된 클래스 내의 생성자를 호출해서 객체를 생성해 보겠습니다. ✔ 클래스(class): 클래스를 정의하는 예약어이며 객체를 생성하는 템플릿 도구이다. ✔ 생성자(constructor): 클래스 정의 이후 객체를 생성하는 기능이다. 보통 클래스 이름으로 호출하고 생성자를 실행하면 객체 내의 속성들을 초기화 처리한다. 아래는 `Hello` 라는 클래스를 생성했습니다. class Hello { val hel..