분류 전체보기
-
[스칼라 문법편] CH04 스칼라의 OOP24년 11월 이전/레거시-누구나 쉽게 스칼라+플레이 2019. 1. 29. 22:08
* 이 포스팅은 책 "누구나 쉽게 스칼라 + 플레이 - 고락윤 한빛미디어" 를 읽고 정리한 것입니다. CH04 스칼라의 OOP 스칼라에서는 모든 것이 객체입니다. 이는 Java보다 훨씬 객체지향적인 특성을 지닌 말과도 일맥상통합니다. 사실 이전에 말씀드렸던 Akka 라이브러리의 경우 FP보다는 액터 모델을 기반으로 완전한 OOP로써 동시성을 해결하는 라이브러리입니다. 이제부터 우리는 스칼라의 객체 지향 프로그래밍을 지원하는 개념, 키워드들을 알아볼 것입니다. 키워드부터 말씀드리자면, class, object, trait 입니다. 01. class 기존, C++, Java, C# 등 OOP를 지원하는 프로그래밍 언어의 경험이 있다면 이미 이해하고 있을 개념입니다. 책에서는 OOP를 다음과 같이 한 줄로 소..
-
[스칼라 문법편] CH03 조건문과 반복문24년 11월 이전/레거시-누구나 쉽게 스칼라+플레이 2019. 1. 29. 22:05
* 이 포스팅은 책 "누구나 쉽게 스칼라 + 플레이 - 고락윤 한빛미디어" 를 읽고 정리한 것입니다. CH03 조건문과 반복문01. 조건식 if/else 스칼라의 조건문은 기존 프로그래밍 언어와 동일하게 3단 구조, if ~ else if ~ else 구조입니다. 기본적인 형태는 다음과 같습니다. val x = 15 if (x > 15){ println("x is bigger than 15") } else if (x 15) "bigger" else if "smaller" else "equal" println(s"x is ${res} compared ${x}") res는 15의 조건에 따라 문자열을 나타내는 값이 되없습니다. 이는 스칼라에서는 if/else 등이 평문이 아닌 값으로 평가된다는 것을 의미합니..
-
[스칼라 문법편] CH02 변수 다루기24년 11월 이전/레거시-누구나 쉽게 스칼라+플레이 2019. 1. 28. 22:16
* 이 포스팅은 책 "누구나 쉽게 스칼라+플레이 - 고락윤 한빛 미디어"를 읽고 필자가 정리한 것입니다. CH02 변수 다루기01. 변수 선언 "컴파일러야 3 보이지? 알아서 맞는 자료형 주고 알아서 메모리 공간 확보해놔. 알아서 해!" 이전 장에서 간략하게 살펴봤던 것처럼 보통 기존의 C, Java 등의 프로그래밍 언어는 자료형을 선언한 후에, 변수 명을 선언해주었습니다. 이렇게 말이죠. int a = 5; final String b = "바뀔 수 없어요."; 스칼라에서는 이렇게 바꿀 수 있습니다. 참고적으로 var 는 바뀔 수 있는 변수를 선언하는 것이고, val은 final 자료형 처럼 바뀔 수 없는 변수를 선언하는 것입니다. var a: Int = 5; val b: String = "바뀔 수 없어..
-
[스칼라 문법편] CH01 스칼라 준비하기24년 11월 이전/레거시-누구나 쉽게 스칼라+플레이 2019. 1. 28. 22:12
* 이 포스팅은 책 "누구나 쉽게 스칼라+플레이 - 고락윤 한빛 미디어"를 읽고 정리한 것입니다. CH01 스칼라 준비하기01. 스칼라에 대해서... 스칼라의 특징은 다음과 같습니다. 코드의 직관성과 신축성이 뛰어나다.스칼라는 기존 자바(여기서 기존 자바는 자바8 이전을 뜻합니다.)와 비교하여, 짧으면서 직관적인 코드 작성을 할 수 있습니다. 예를 들어서, 다음과 같이 사람을 나타내는 Person 클래스가 있다고 가정해봅시다. class Person{ String name; int age; public Person(String name, int age){ this.name = name; this.age = age; } public String getName(){ return name; } public i..
-
[알고스팟] 외계 신호 분석(ITES)24년 11월 이전/레거시-알고스팟-알고리즘 문제 해결 전략 2019. 1. 23. 13:44
[알고스팟] 외계 신호 분석(ITES)목표 : 책 "알고리즘 문제 해결 전략 문제 풀이" 중 문제 외계 신호 분석(ITES)를 풀어보자문제 URL풀이외계 신호 분석(ITES) 문제는 큐와 온라인 알고리즘을 이용하여 푸는 문제입니다. 온라인 알고리즘이란 무엇이냐. 오프라인 알고리즘의 경우 입력의 값이 모두 나왔을 때, 알고리즘을 일괄적으로 적용하여 문제를 푸는 것을 말하고, 온라인 알고리즘은 입력이 생성될 때마다, 알고리즘을 적용하여 문제를 푸는 방식을 말합니다. 일반적으로 예를 들어서 어떤 배열의 누적합을 구하는 경우, 이미 만들어져 있는 배열을 토대로 다음과 같이 누적합 만들 수 있습니다. arr = [1, 2, 3] acc = 1 + 2 + 3 = 6 그런데, 이렇게 생각할 수도 있습니다. 배열의 원..
-
[알고스팟] 조세푸스 문제(JOSEPHUS)24년 11월 이전/레거시-알고스팟-알고리즘 문제 해결 전략 2019. 1. 23. 11:04
[알고스팟] 조세푸스 문제(JOSEPHUS)목표 : 책 "알고리즘 문제 해결 전략 문제 풀이" 중 문제 조세푸스 문제(JOSEPHUS)를 풀어보자문제 URL풀이조세푸스 문제는 대표적인 큐 시뮬레이션 문제입니다. 먼저 첫 번째 예제를 살펴보도록 할까요? N = 6, K = 3 병사들은 1~6번까지, 원 형태로 앉아 있습니다. 이제 1번부터 2명이 남을 때까지 차례대로 죽여 나갈 건데, 아래 표에서 죽인다면, X를 표시해보도록 하지요. 또한, O는 죽어야 하는 놈을 가리키는 인덱스라고 하겠습니다. 1명 쨰, | 1 | 2 | 3 | 4 | 5 | 6 | | X | | | | | | | O | | | | | | 1번은 안타깝게도 묻지도 따지지도 않고 죽여야 합니다. 2명 째, | 1 | 2 | 3 | 4 | ..
-
[알고스팟] 짝이 맞지 않은 괄호(BRACKETS2)24년 11월 이전/레거시-알고스팟-알고리즘 문제 해결 전략 2019. 1. 23. 00:15
[알고스팟] 짝이 맞지 않은 괄호(BRACKETS2)목표 : 책 "알고리즘 문제 해결 전략 문제 풀이" 중 문제 "짝이 맞지 않는 괄호"를 풀어보자문제 URL풀이"짝이 맞지 않은 괄호" 같은 문제는 스택을 이용하는 대표적인 알고리즘 문제입니다. 이 문제의 경우 다음의 조건을 검사해야 합니다. 모든 괄호는 쌍이 맞아야 한다.모든 괄호는 먼저 열리고 그 후에 닫혀야 한다.어떠한 쌍도 교차될 수 없다. (ex : "({)}" ) 이 문제 역시 스위핑 알고리즘을 기반으로 짭니다. 문제의 핵심은 닫히는 괄호가 나올때 짝이 맞는 열리는 괄호가 있는가입니다. 알고리즘의 가장 큰 줄기는 다음과 같습니다. 입력 문자열을 다음과 같이 순회합니다.현재 문자가 괄호를 여는 문자들 "(", "{", "[" 중 하나라면, 스택에..
-
[알고스팟] 울타리 쳐내기(FENCE)24년 11월 이전/레거시-알고스팟-알고리즘 문제 해결 전략 2019. 1. 22. 23:03
[알고스팟] 울타리 쳐내기(FENCE)목표 : 책 "알고리즘 문제 해결 전략 문제 풀이" 중 문제 "울타리 쳐내기"를 풀어보자문제 URL풀이이 문제를 푸는 열쇠는 스택과 스위핑 알고리즘입니다. 스위핑 알고리즘이란 간단히 말해서 이미 연산이 진행된 이전 공간에 대해서는 연산을 하지 않는다라고 생각하시면 됩니다. 개념 자체는 쉽습니다만... 굉장히 생각하기 어렵다는게 함정입니다. 이 문제를 예를 들어 설명하겠습니다. 이 문제에서 우리가 사각형을 구하기 위해 필요한 정보는 그 사각형의 왼쪽 끝과 오른쪽 끝 그리고 높이입니다. 높이가 오른쪽 끝점의 높이라고 했을 때, 왼쪽으로 연속된 판자들 중 이 높이를 포함하는 가장 낮은 지점이 왼쪽 끝 점이 되겠죠. 이 성질을 이용해서, 문제를 푸는 것이죠. 그래서 어떻게 ..