분류 전체보기

    1550번 / 16진수

    1550번 / 16진수

    문제내용 16진수 수를 입력받아서 10진수로 출력하는 프로그램을 작성하시오. 입출력 1. 입력 첫째 줄에 16진수 수가 주어진다. 이 수의 최대 길이는 6글자이다. 16진수 수는 0 9와 A F로 이루어져 있고, A F는 10 15를 뜻한다. 또, 이 수는 음이 아닌 정수이다. 2. 출력 첫째 줄에 입력으로 주어진 16진수 수를 10진수로 변환해 출력한다. 풀이 굉장히 간단한 문제다. Integer클래스를 잘 활용하면 된다. import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner scanner = new Scanner(System.in); String hex = scanner.next(); /..

    1271번 / 엄청난 부자

    1271번 / 엄청난 부자

    문제 설명 갑부 최백준 조교는 동전을 최소로 바꾸는 데 성공했으나 김재홍 조교가 그 돈을 발견해서 최백준 조교에게 그 돈을 나누자고 따진다. 그 사실이 전 우주로 알려지자 우주에 있던 많은 생명체들이 자신들에게 돈을 분배해 달라고 당장 달려오기 시작했다. 프로토스 중앙 우주 정부의 정책인, ‘모든 지적 생명체는 동등하다’라는 규칙에 입각해서 돈을 똑같이 분배하고자 한다. 한 생명체에게 얼마씩 돈을 줄 수 있는가? 또, 생명체들에게 동일하게 분배한 후 남는 돈은 얼마인가? 입출력 1. 입력 첫째 줄에는 최백준 조교가 가진 돈 n과 돈을 받으러 온 생명체의 수 m이 주어진다. (1 ≤ m ≤ n ≤ 101000, m과 n은 10진수 정수) 2. 출력 첫 번째 줄에 생명체 하나에게 돌아가는 돈의 양을 출력한다..

    구글홈으로 컴퓨터를 켜보자!! 2탄

    구글홈으로 컴퓨터를 켜보자!! 2탄

    2탄으로 돌아왔다 1탄에 비해서 응용 프로그램 하나만 설치하면 간단하게 절전과 종료를 만들 수 있다. 준비물 : IFTTT, GoogleAssitant, Push2Run, PushBullet 가입된 계정 PushBullet은 구글 계정으로 가입 가능하므로 미리 가입해놓으면 편하다. 전체적인 흐름은 다음과 같다. 과정 과정은 1탄과 크게 다르지 않다. IFTTT에서 GoogleAssitant로 받고 PushBullet으로 메시지를 보낸다. Push2Run에 PushBullet의 Token을 등록 후 action을 만들어 준다. IFTTT 설정 1. IF에 구글 어시스턴트 등록 2. Then에 PushBullet 등록 3. push a note 선택 후 메시지 입력 4. Push2Run에 PushBullet..

    구글홈으로 컴퓨터를 켜보자!! 1탄

    구글홈으로 컴퓨터를 켜보자!! 1탄

    왜 했을까? 집에 컴퓨터 있겠다. 구글 홈 있겠다. 라우터 역할해주는 공유기 있겠다. 이거 완전 홈 iot 구성 가능한 거 아냐? 침대에 누워서 컴퓨터 켤 수 있는 거 아냐?라는 생각에 시작했다. 이때만 해도 엄청나게 고생할 줄 몰랐다 일단 준비물은 다음과 같다. 준비물 : 구글홈, 구글 계정, 휴대폰 조건 무료로 환경을 구성할 것 참고하는 자료는 적어도 20년 이후 자료를 참고할 것 1회 차 되게 안일하게 생각했다. 구글에 검색만 해도 예시가 많았고 예시를 따라 하기만 하면 될 줄 알았다. 1회 차는 다음 블로그를 참고했다. sejongdekang의 블로그 간단히 정리하면 iptime이나 공유기에 원격으로 접속 가능하게 한다 Wake On Lan 패킷을 뜯어서 http요청을 알아낸다. action on..

    14. 고차함수와 람다

    14. 고차함수와 람다

    고차 함수 고차 함수는 함수를 파라미터로 받거나 함수를 리턴하는 함수이다. fun lock(lock: Lock, body: () -> T): T{ lock.lock() try { return body() } finally { lock.unlock() } } 위 코드를 보면 body는 함수 타입인 () -> T이다. 이 함수 타입은 파라미터가 없고 T를 리턴하는 함수이다. lock()을 호출할 때 인자로 다른 함수를 전달할 수 있다. fun toBesynchronized() = sharedResource.operation() val result = lock(lock, ::totoBesynchronized) 보다 더 간편한 방법은 람다식을 전달하는 방법이다. val result = lock(lock, { s..

    13. 함수

    13. 함수

    함수 선언 코틀린에선 fun 키워드로 선언한다 fun double(x: Int): Int{ return 2 } 함수 사용 전통적인 방식으로 호출 및 멤버 함수는 점 부호로 호출 double(2) Simple().foo() 파라미터와 인자 파스칼 표기법(name: type)를 사용해서 파라미터를 정의한다. 또한 기본 값을 가질 수 있다. fun powerOf(number: Int, exponent: Int = 0){} 기본 값이 있는 경우 인자를 넣지 않을 경우 기본값을 사용한다. 이는 오버 로딩 함수의 개수를 줄여준다. 오버라이딩오버 라이딩 메서드는 항상 베이스 메서드와 같은 기본값을 가진다. 또한 기본 값을 갖는 메서드 오버 라이딩 시, 시그니처에서 기본 파라미터 값을 생략해야 한다. open clas..

    12. 위임

    12. 위임

    위임 패턴의 정의 어떤 객체의 조작 일부를 다른 객체에게 넘김 위탁자(delegator) → 수탁자(delegate) 책임을 다른 클래스, 메서드에 떠넘기는 것을 말한다. 클래스 위임 이러한 위임 패턴을 코틀린에선 보일러 플레이트 없이 제공한다. interface Base { //수탁자 delegate fun print() } class BaseImpl(val x: Int) : Base { override fun print() { print(x) } } class Derived(b: Base) : Base by b //위탁자 delegator fun main(args: Array){ val b = BaseImpl(10) Derived(b).print() } 출력결과 10 Derived의 상위 타입에 있는..

    11. 오브젝트 식과 선언

    11. 오브젝트 식과 선언

    하위 클래스를 만들지 않고 특정 클래스를 일부 수정해서 객체를 만들려면 자바에선 익명 클래스를 이용했다. 코틀린은 오브젝트 식과 오브젝트 선언으로 할 수 있다. 오브젝트 식 사용은 다음과 같다. open class A() { open fun printA() } val ab = object : A() { override fun printA() { ... } } 만약 상위 타입이 생성자를 가지면 알맞은 패러미터를 전달하면 된다. 여러개 상속할 경우 콤마로 구분 지을 수 있다. open class A(x: Int) { open val b = x } interface B {...} val ab = object : A(2), B { override val b = 15 } 단순 객체만 필요하면 상속받지 않으면 된다..