Kotlin

    1157번 / 단어공부

    1157번 / 단어공부

    문제 내용 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. 입출력 1. 입력 첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다. 2. 출력 첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는?를 출력한다. 예제 입력 출력 Mississipi ? zZa Z z Z baaa A 풀이 문자를 ASCII로 변경한 뒤 뺄셈 해주면 해결되는 문제다 import java.util.Scanner; public class Main { public static void mai..

    1145번 / 적어도 대부분의 배수

    1145번 / 적어도 대부분의 배수

    문제 내용 다섯 개의 자연수가 있다. 이 수의 적어도 대부분의 배수는 위의 수 중 적어도 세 개로 나누어지는 가장 작은 자연수이다. 서로 다른 다섯 개의 자연수가 주어질 때, 적어도 대부분의 배수를 출력하는 프로그램을 작성하시오. 입출력 1. 입력 첫째 줄에 다섯 개의 자연수가 주어진다. 100보다 작거나 같은 자연수이고, 서로 다른 수이다. 2. 출력 첫째 줄에 적어도 대부분의 배수를 출력한다. 예제 입력 출력 30 42 70 35 90 210 1 2 3 4 5 4 30 45 23 26 56 1170 3 14 15 92 65 195 풀이 처음 문제를 봤을 때 최소공배수를 이용하는 문제라는 것을 바로 알게 됐다. 문제 해결 방식으로 공약수로 세 수를 동시에 나눠서, 공약수와 나눈 서로소를 곱하는 것을 채..

    1032번 / 명령프롬포트

    1032번 / 명령프롬포트

    문제 내용 시작 -> 실행 -> cmd를 쳐보자. 검정 화면이 눈에 보인다. 여기서 dir이라고 치면 그 디렉터리에 있는 서브 디렉터리와 파일이 모두 나온다. 이때 원하는 파일을 찾으려면 다음과 같이 하면 된다. dir *. exe라고 치면 확장자가 exe인 파일이 다 나온다. "dir 패턴"과 같이 치면 그 패턴에 맞는 파일만 검색 결과로 나온다. 예를 들어, dir a?b.exe라고 검색하면 파일명의 첫 번째 글자가 a이고, 세 번째 글자가 b이고, 확장자가 exe인 것이 모두 나온다. 이때 두 번째 문자는 아무거나 나와도 된다. 예를 들어, acb.exe, aab.exe, apb.exe가 나온다. 이 문제는 검색 결과가 먼저 주어졌을 때, 패턴으로 뭘 쳐야 그 결과가 나오는지를 출력하는 문제이다. ..

    2338번 / 긴자리계산

    2338번 / 긴자리계산

    문제 내용 두 수 A, B를 입력받아, A+B, A-B, A×B를 구하는 프로그램을 작성하시오. 입출력 1. 입력 첫째 줄에 A가, 둘째 줄에 B가 주어진다. 각각의 수는 10진수로 1,000자리를 넘지 않으며 양수와 음수가 모두 주어질 수 있다. 2. 출력 첫째 줄에 A+B, 둘째 줄에 A-B, 셋째 줄에 A×B를 출력한다. 각각을 출력할 때, 답이 0인 경우를 제외하고는 0으로 시작하게 해서는 안 된다(1을 01로 출력하면 안 된다는 의미). 풀이 1271번 엄청난 부자와 같은 문제다. BigInteger를 활용하는 문제다. 각각의 수는 10진수로 1000자리를 넘지 않으며 따라서 풀면 import java.math.BigInteger; import java.util.Scanner; public cl..

    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. 출력 첫 번째 줄에 생명체 하나에게 돌아가는 돈의 양을 출력한다..

    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..