분류 전체보기
-
[스칼라 문법편] CH06 패턴 매칭24년 11월 이전/레거시-누구나 쉽게 스칼라+플레이 2019. 1. 29. 22:19
* 이 포스팅은 책 "누구나 쉽게 스칼라 + 플레이 - 고락윤 한빛미디어" 를 읽고 정리한 것입니다. CH06 패턴 매칭01. 패턴 매칭이란? 기존, Java, C, C++ 유저라면, 3장 제어문 파트에서 한 가지 빼먹었구나라고 생각하실 수 있겠습니다. 바로 switch문 때문인데요, switch 문은 특정 변수의 값에 따라 분기하고 싶을 때 쓰는 제어문이죠. switch(a){ case 1 : /*1 logic*/ break; case 2 : /*2 logic*/ break; default: /*default locgic*/ break; } switch 문은 if/else 구문으로 구성을 달리 할 수 있습니다. 또한, if/else에 비해 조건 처리문을 짜는게 제한적이기 때문에 근래에 들어서는 잘 쓰이..
-
[스칼라 문법편] CH05 FP의 기본! 함수24년 11월 이전/레거시-누구나 쉽게 스칼라+플레이 2019. 1. 29. 22:13
* 이 포스팅은 책 "누구나 쉽게 스칼라 + 플레이 - 고락윤 한빛미디어" 를 읽고 정리한 것입니다. CH05 FP의 기본! 함수 이번 장에서는 스칼라에서 중요한 철학 중 하나인 함수형 프로그래밍의 기본 함수에 대해서 알아보고, 추가로 몇 가지 더 알아보도록 하겠습니다. 01. FP의 배경 사실, Functional Programming, FP는 근래에 나온 개념이 아닙니다. 굉장히 오래된 개념 중 하나이지요. 근데 15~16년 이후부터 재조명을 받게 되었을까요? 이유는 컴퓨터의 발전 과정에 있습니다. CPU가 엄청난 속도로 발전하면서, 그 발전의 한계가 점점 드러나고 있지요. 바꿔 말하면 CPU 1개의 성능을 향상시키기 위한 발전의 속도가 떨어졌다는 뜻입니다. 그 결과 우리는 컴퓨터를 더 빠르게 처리하..
-
[스칼라 문법편] 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 | ..