본문 바로가기

분류 전체보기

(224)
[BOJ 1106] 호텔 배낭 문제 https://www.acmicpc.net/problem/1106 https://www.acmicpc.net/problem/12865 해당 문제를 응용한 문제입니다. [문제 풀이] 전형적인 배낭 문제입니다. 적어도 C명을 늘리기 위한 최소한의 비용을 내야 합니다. 이 '적어도'가 중요하지만 지금은 넘어가겠습니다. 근본적인 해결 방법은 배낭 문제(다이나믹 프로그래밍)와 같습니다. 부분 문제로 나눠주면서 메모이제이션을 적용하면 됩니다. 한 개의 도시에 대해 할 수 있는 선택지는 다음과 같습니다. 1. 해당 도시에 홍보를 한다. (홍보 비용을 지불하고 고객 수를 늘림) 2. 해당 도시에 홍보를 하지 않는다. (홍보 비용을 지불하지 않음) 1번 선택지를 고른다면 해당 도시에 홍보 비용을 지불하기 전에..
[알고리즘] 이분 탐색 (Binary Search) [알고리즘 소개] 배열 내에서 특정 요소 k를 $O(logn)$으로 찾는 알고리즘. [알고리즘 특징] 배열을 미리 정렬 해야 함. [코딩 방법] 배열 arr을 정렬. 결과 인덱스 idx = N으로 설정(일치하는 값이 없는 경우 lower bound를 출력하기 위함). 최소 인덱스 0부터 최대 인덱스 N - 1까지의 중간값 mid를 구함 left는 0부터, right는 N - 1부터 시작해서 left = k면 idx = mid, right = mid - 1; else left = mid + 1 idx가 lower bound이면서 결과 인덱스가 됨. [응용] k 이상이 처음 나오는 lower bound, k 초과가 처음 나오는 upper bound. 꼭 배열이 아닌 구간에 대해 실행해도 됨. (나무 자르기)..
[영어 표현] 거의 [almost, nearly, about] almost와 nearly는 거의 같다. 그냥 같다고 봐도 무방하다. 단 almost(nearly)와 about은 조금 다르다. 99% 일치하여 거의라는 표현을 쓴다고 가정해 보자. about이 99%에 초점을 두는 것이라면, almost는 1%에 초점을 두어 부정적인 의미를 나타낸다. 예문으로 비교를 해보겠다. 아래 두 문장은 둘 다 '거의 맞았어'라는 의미를 갖고 있지만 뉘앙스가 다르다. You're almost right. => 아쉽게도 다 맞지는 않았다. You're about right. => 맞았다고 볼 수 있다. 응용을 하나 더해서 예문을 들어보겠다. 아래 두 문장은 둘 다 '그는 거의 10년을 일해오고 있다'라는 의미를 갖고 있지만 뉘앙스가 다르다..
[Kotlin] 생성자 코틀린의 생성자는 constructor()를 사용하여 만들 수 만들 수 있습니다. Java에서 클래스이름을 사용하던 것을 constructor로 바꾸면 끝입니다. class Student { var name = "" var score = 0 constructor(name: String, score: Int) { this.name = name this.score = score } } fun main() { var st1 = Student("강지훈", 33) } 타 언어와 다르지 않은 생성자 선언 방식입니다. 하지만 여기서 더 나아가서 다른 방식으로도 만들어 줄 수도 있습니다. 우선, Kotlin에는 생성자에는 주생성자와 부생성자 두 종류가 있다는 것과, constructor가 부생성자라는 것을 알아야 합니..
[Kotlin] 빠른 입출력 사실 Kotlin에서 입출력은 크게 쓸모가 없지만, 알고리즘 문제 풀이를 위해 정리하였습니다. https://www.acmicpc.net/problem/15552 해당 문제를 풀이하였습니다. (백준 15552번 빠른 A+B) [일반 입출력] fun main() { var T = readLine()!!.toInt() while (T-- > 0) { var twoNums = readLine()!!.split(' ') println(twoNums[0].toInt() + twoNums[1].toInt()) } } Kotlin으로 할 수 있는 가장 기본적인 입출력입니다. 당연히 해당 코드를 제출하면 시간 초과입니다. 빠른 입출력을 얻기 위해 여러 시도를 해봤고, 나름의 방법을 찾았습니다. 입출력 구조를 새로 정의..
[영어 표현] 거절하다 refuse와 reject만으로 헷갈리는데 무려 3개나 더 있다. [refuse] 요청, 부탁, 제의 등의 뉘앙스를 거절한다는 의미. 거절한다는 의미가 강해 무례한 느낌을 줄 수도 있다. ex) He refuses to play the game. => 그는 그 게임을 하기를 거부했다. [reject] 주장, 생각, 계획 등을 거부한다는 의미. 마찬가지로 거절한다는 의미가 강하다. ex) She rejected my opinion. => 그녀는 내 의견을 거부했다. [decline] refuse와 동일하나, 격식있는 표현이다. ex) The team members declined interview. => 그 팀원들은 인터뷰를 거절했다. [turn down] refuse나 reject보다 거절한다는 의미가 ..
[영어 문법] be to 여러 조동사들을 대체할 수 있는 be to. 기존의 조동사들을 조금 더 격식 있게 표현할 수 있다. 미래, 의무, 가능,... 이런 식으로 대체할 수 있다고는 하나, 머리에 안 들어올 가능성이 농후하다. 어떤 의미로 어떤 것을 대체하는지 예문을 통해 보자. [will] 첫 번째로는 will이다. "~할 것이다"라는 의미를 갖는다. ex) I'm to(will) be back. => 나는 돌아올 것이다. [must] 두 번째로는 must이다. "~해야만 한다"라는 의미를 갖는다. ex) He is to(must) finish his homework. => 그는 그의 숙제를 끝내야만 한다. [can] 세 번째로는 can이다. "~할 수 있다"라는 의미를 갖는다. ex) She is to(can) play t..
[영어 표현] 지시하다 [instruct] 업무상으로 지시하는 표현. 격식있고, 부드러운 표현이다. ex) I was instructed to coming in on Saturday. => 나는 토요일에 출근하라는 지시를 받았다. [direct] 공무상으로 지시하는 표현. 강압적인 표현이다. ex) The man direct them to leave here. => 그 남자는 그들에게 이곳을 벗어나라고 지시했다. [order] 강하게 지시하는 표현. 강압적인 표현이라 명령하다라는 의미도 있다. ex) She ordered me to manage her employees. => 그녀는 내게 직원들을 관리하도록 지시했다. [command] 명령하다라는 표현. order보다도 강압적이라 지휘한다는 의미도 있다. ex) The col..