분류 전체보기(361)
-
[Baekjoon] 1806번: 부분합
https://www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. www.acmicpc.net 문제 설명 10,000 이하 자연수로 이루어진 길이 N의 수열이 주어진다. 이 수열에서 연속된 수들의 부분합 중에 그 합이 S 이상이 되는 것 중 가장 짧은 것의 길이를 구하는 프로그램을 작성해야 한다. 만약 합이 없다면 0을 출력한다. 풀이 방법 - 투 포인터 이 문제는 투 포인터를 활용하여 해결할 수 있다. 예제 입력을 가지고 과정을 살펴보자. N = 수열의 길이이다. S = 비..
2023.03.28 -
[Baekjoon] 6198번: 옥상 정원 꾸미기
https://www.acmicpc.net/problem/6198 6198번: 옥상 정원 꾸미기 문제 도시에는 N개의 빌딩이 있다. 빌딩 관리인들은 매우 성실 하기 때문에, 다른 빌딩의 옥상 정원을 벤치마킹 하고 싶어한다. i번째 빌딩의 키가 hi이고, 모든 빌딩은 일렬로 서 있고 오른쪽으 www.acmicpc.net 문제 설명 빌딩 관리인들은 다른 빌딩의 옥상을 벤치마크하고 싶어 한다. 그래서 자기 빌딩보다 낮은 빌딩들의 옥상 정원을 보며 본인 소유의 빌딩 옥상 정원에 대한 고민을 한다. 모든 빌딩은 일렬로 서 있고 오른쪽으로만 볼 수 있다. 그리고 본인 소유 빌딩과 높이가 같거나 큰 경우엔 옥상을 볼 수 없다. 1번 관리인은 2, 3, 4 번 빌딩의 옥상을 볼 수 있다. 2번 관리인은 다른 빌딩의 옥..
2023.03.27 -
Shell Script
Unix/Linux 환경에서 커맨드를 실행하도록 작성한 스크립트이다. 조건 설정, 파일 입출력, 로그 파일 작성 등을 할 수 있다. 기본 설정 #!/bin/sh echo "Hello, World!!" 쉘 스크립트 파일은 기본적으로 .sh 확장자로 작성한다. 실제 코드를 작성하기 전 맨 처음 행에는 #!/bin/sh를 작성한다. 시스템에 지금부터 쉘 스크립트를 실행한다는 사실을 알리기 위해서다. 만약 기본 쉘이 아니라 커스텀한 쉘을 사용하는 경우 경로를 해당 쉘의 경로로 작성해야 한다. 코드를 실행하는 방법은 다음과 같다. // 먼저 실행 권한을 준다. $ chmod 755 test.sh $ ./test.sh $ sh test.sh $ bash test.sh 기본 커맨드 주석 #으로 주석 처리할 수 있다...
2023.03.26 -
[Kotlin] 9. 뻔하지 않은 생성자와 프로퍼티를 갖는 클래스 선언
Java에서는 하나 이상의 생성자를 선언할 수 있다. Kotlin은 약간 다른 점이 있다. Kotlin은 주(primary) 생성자와 부(secondary) 생성자를 구분한다. 또한 초기화 블록을 통해 초기화 로직을 추가할 수 있다. 주 생성자는 보통 클래스를 초기화할 때 주로 사용하는 간략한 생성자로 클래스 본문 밖에서 정의한다. 부 생성자는 클래스 본문 안에서 정의한다. 주 생성자부터 살펴보자. 1. 클래스 초기화: 주 생성자와 초기화 블록 Java에서 클래스를 선언하면 다음과 같을 것이다. class User { private final String nickname; public User(String nickname) { this.nickname = nickname; } } 하지만 위 코드를 Kot..
2023.03.26 -
[Kotlin] 8. 클래스 계층 정의
1. 인터페이스 interface Clickable { // 추상 메소드. Clickable을 구현하는 클래스는 이를 구현해야 함 fun click() // 디폴트 메소드. Java와 달리 구현만 하면 디폴트 메소드로 선언된다. fun showOff = println("I'm clickable!") } interface Focusable { fun setFocus(b: Boolean) = println("I ${if (b) "get" else "lost"} focus.") fun showOff() = println("I'm focusable!") } 두 개의 인터페이스에 같은 메서드 시그니처를 가진 디폴트 메소드가 존재할 경우 이를 구현하는 클래스에서는 해당 디폴트 메서드를 명시적으로 구현해야 한다. 그..
2023.03.26 -
[Kotlin] 7. 메소드를 다른 클래스에 추가: 확장 함수와 확장 프로퍼티
확장 함수 어떤 클래스의 멤버 메소드인 것처럼 호출할 수 있지만 그 클래스의 밖에 선언된 함수이다. package strings fun String.lastChar(): Char = this.get(this.length - 1) 확장 함수를 만들려면 추가하려는 함수 앞에 그 함수가 확장할 클래스의 이름을 덧붙이면 된다. 이때, 클래스 이름을 수신 객체 타입(receiver type), 확장 함수가 호출되는 대상이 수신 객체(receiver object)라고 부른다. 위의 경우 String이 수신 객체 타입, this가 수신 객체가 된다. 위 함수를 사용하는 코드를 보자. println("Kotlin".lastChar()) // n 이때 수신 객체 타입은 String이고 수신 객체는 Kotlin이라는 문자..
2023.03.26