목록전체 글 (60)
코학다식
문제 링크 Solution 처음에는 양수 배열과 음수 배열로 나누어서 이분 탐색을 실행하는 걸 고민해 봤는데, 번거로운 것 같고 다른 방법이 있을 것 같아 다른 방법을 찾다 절댓값으로 정렬해서 이웃한 두 수를 더하는 방법을 사용했다. 이 방법을 사용하면 모두 양수인 경우, 모두 음수인 경우도 쉽게 해결할 수 있다. 대충 봤을 때 값이 꽤 커 보이기에 모든 변수를 long long으로 선언해 줬다. +) C++의 sort 함수는 정말 자주 유용하게 쓰이는 것 같다. code #include #include #include #include using namespace std; vector ans; bool cmp (const long long a, const long long b) { if (abs(a) =..
Java 시작하기(5) Object Oriented Programming(2): classes, variables, and methods Final 인스턴스 변수 인스턴스 변수가 final 키워드를 사용해서 선언되었다면, 그 변수의 값은 생성자 안에서만 결정될 수 있다. class Employee { private final String name; public Employee() { this.name = "Kim"; } public void setName(String name){ this.name = name; // Error: cannot assign a value to a final instance variable } } Static 변수 클래스를 정의할 때, 변수는 static 변수로 정의될 수 있..
Java 시작하기(4) Object Oriented Programming(1): classes, variables, and methods 자바, 객체 지향(Object-oriented) 언어 자바에서 대부분의 변수와 리터럴은 객체(Object)이다. 객체는 클래스의 인스턴스(instance)이다. 클래스는 객체의 타입이라고 할 수 있다. class Employee { String name; public void setName(String name) { this.name = name; } public String getName() { return name; } } public class LEC { public static void main(String[] args) { Employee m = new Emp..
Operating System charter 3, Processes (1) Process: 프로세스란 무엇일까? 실행 중인 프로그램을 말한다. 프로그램은 passive entity 프로세스는 프로그램 카운터가 동작하는 active entitiy 프로그램은 실행 가능한 파일이 메모리에 로드되었을 때 프로세스가 된다. 운영체제는 다양한 프로그램을 실행한다. Batch system - jobs Time-shared systems - tasks(interactive) 프로세스는 코드 (또는 텍스) 섹션, 데이터 섹션, 스택(stack)과 힙 섹션, 그리고 프로그램 카운터를 포함한다. 프로그램 카운터는 다음에 실행될 명령의 위치를 저장하고 있다. 실행 가능한 파일이 메모리에 로드되면 다음과 같다. 스택에는 함수의..
소스 코드 이미지 파일로 만들기 :: Carbon 생활코딩 같은 곳에 (위의 사진처럼) 소스 코드가 맥 같은 테마에 쓰여서 예쁘게 이미지로 올라와 있는 걸 볼 때마다 어떻게 할 수 있는 건지 궁금했는데, 얼마 전에야 알았다. 맥에만 있는 기능 같은 건 줄 알았더니 한 사이트를 이용하면 할 수 있는 것이었다. 여기에서 아주 쉽게 예쁜 소스 코드가 담긴 이미지를 만들 수 있다. 트윗으로도 올릴 수 있는 모양이다. 위에 링크된 주소에 접속하면 이런 화면이 뜨는데, 파레트 모양의 탭에서 원하는 테마를 고르고 그 옆의 탭에서 언어를 고르면 된다. 바로 아래 창에 코드를 쓰고 Export를 클릭하면 이미지로 저장할 수 있다! 코드 블럭을 사용하는 것에 비해 좀 번거롭지만 보기 좋으니 다양하게 쓸 수 있을 것 같다.
문제 링크 Solution 정렬 함수인 sort()만 사용하면 쉽게 풀 수 있는 문제로 보이지만, 주의해야 할 것이 하나 있다. 나이가 같은 경우 먼저 가입한, 즉 먼저 입력받은 요소가 앞에 와야 한다는 것이다. 이를 위해 비교 함수(comp)를 바꿔 줄 수도 있지만, sort()와 같이 정렬 함수 중 하나인 stable_sort()를 사용하면 간편하게 풀 수 있다. stable_sort()는 sort()와 같이 정렬을 수행한다는 것은 같지만 값이 같은 경우에는 원래의 순서를 그대로 유지한다. sort()의 경우 입력받은 데이터의 크기가 작으면 값이 같은 경우에 따로 처리를 해 주지 않아도 순서가 유지되는 것처럼 보이나, 데이터가 커지면 랜덤하게 바뀔 수 있다. code #include #include ..
Operating System chapter 1-2 (4) System Boot 부팅(Booting)이란 커널을 로딩함으로써 컴퓨터를 시작하는 것을 말한다. 시스템에서 파워가 초기화되면, Bootstrap loader가 위치한, 고정된 메모리 위치(ROM)에서 실행이 시작된다. 보통 두 단계의 과정을 거친다. (mother board - hard disk) 운영체제 서비스 운영체제의 서비스 중 한 집합은 사용자에게 유용한 기능을 제공한다. 유저 인터페이스(User interface) - 거의 모든 운영체제가 사용자 인터페이스(UI)를 가진다. Command-Line Interface(CLI), Graphic User Interface(GUI), Batch 프로그램 실행 - 시스템은 메모리에서 프로그램을 ..
문제 링크 Solution 반복문을 이용해서 부분 배열의 합을 구하려고 하면 시작점과 끝점을 바꿔 가면서 값을 구해야 하기 때문에 반복문을 최소 두 번은 중첩해서 사용하게 된다. 그러면 시간 초과가 나기 때문에, 반복문을 중첩하는 방법으로는 AC를 받을 수 없다. 그런데 DP를 이용하면 선형 시간 안에 이 문제를 해결할 수 있다. 부분 배열의 합을 저장하는 배열을 하나 더 만든다고 생각해 보자. 이 배열의 이름을 dp라고 하면, dp[i]는 해당 인덱스까지의 부분 배열의 합을 의미한다. 주어진 배열이 -1 -2 -5 6 1이라고 가정하자. 편의상 인덱스가 1부터 시작한다고 생각하고 dp의 값을 구하면 dp[1]은 -1이 될 것이다. dp[2]는 dp[1]에 -2를 더한 값이 되는데, 이는 dp[1]보다 ..