분류 전체보기
[파이썬] 리스트 변형 :: 리스트를 원하는 형태로 바꾸기, 리스트 형변환
[파이썬] 리스트 변형 :: 리스트를 원하는 형태로 바꾸기, 리스트 형변환
2019.08.15어떤 리스트를 원하는 형태로 변형하기 파이썬은 list 안의 모든 원소를 내가 원하는 형태로 변형하기 쉽다. 나는 문자열 list를 int형 리스트로 변환할 때 많이 사용한다. 특히, 백준 문제를 풀 때 input함수나 readline함수를 사용하여 숫자를 입력 받았을 때 많이 사용한다. 그 외에도 기존 list의 원소들을 모두 제곱할 때나 원하는 형태로 바꾸고 싶을 때 유용하다!! 방법 1: map 함수 사용하기 첫 번째 방법은 map내장 함수를 사용하는 것이다. map함수는 저번에 작성한 글([파이썬] 리스트 필터링)에서 설명한 filter함수의 사용법과 비슷하다. map함수는 한 원소에 대해 원하는 대로 변형한 것을 반환하는 함수와 변형할 대상인 list가 필요하다. map함수는 다음과 같이 사용하..
[파이썬] 리스트 필터링 :: 리스트에서 원하는 요소만 추출하기
[파이썬] 리스트 필터링 :: 리스트에서 원하는 요소만 추출하기
2019.08.10어떤 리스트에서 원하는 요소만 추출하기(필터링하기) 파이썬은 list에서 아주 쉽게 원하는 요소만 추출해서 새로운 list를 만들 수 있다. 방법 1: filter 함수 사용하기 첫 번째 방법은 filter내장 함수를 사용하는 것이다. filter함수를 사용하기 위해서는 bool을 반환하는 함수와 추출할 대상인 list(또는 Iterable)가 필요하다. filter함수는 다음과 같이 사용하면 된다. 예를 들어서, 내가 originalList = [1, 2, 44, 52, 61, 7, 28, 92, 10] 위와 같은 list에서 5보다 큰 수만 뽑아내고 싶다고 해보자. 먼저, 5보다 크면 True를 반환하는 함수를 만든다. def isBiggerThanFive(x): return x>5 다음, isBig..
[Compiler] 1. Lexical Analyzer :: 소개와 용어 정리
[Compiler] 1. Lexical Analyzer :: 소개와 용어 정리
2019.07.30Compiler의 첫 번째 단계는 Lexical Analysis로 가장 먼저 Lexical Analyzer를 실행합니다. Lexical Analyzer는 어떤 일을 할까요? Lexical Analyzer는 Input 문자열들을 스캔하면서 의미가 있는 단위로 문자열을 묶습니다. (그래서 Scanner라고도 불립니다). 그리고 일련의 Token들을 생성해 내고 Syntax Analyzer에게 보냅니다. 이 과정을 진행하면서 Token들에 대한 정보들을 Symbol Table에 저장합니다. Lexical Analyzer의 동작 방식을 알아보기 전에 앞으로 쓸 용어들에 대해 알아봅시다. Lexical Analyzer에서 쓰는 용어들: Token, Lexeme, Pattern Token A token is a p..
제네릭 프로그래밍의 정의
제네릭 프로그래밍의 정의
2019.07.25제네릭 프로그래밍이란? 데이터 형식과 관련 없이, 알고리즘이나 자료구조를 효율적으로 설계하는 프로그래밍 방식을 뜻한다. 나중에 정의가 되는 데이터 형식 type(int, float, double, string, ... , 등 모두될 수 있다)을 매개변수로 하는 메서드나 클래스나 인터페이스를 만드는 것과 같다. 제네릭 프로그래밍은 코드의 효율을 넓히기 위해 쓰인다. 어떤 함수를 모든 자료형이 통하도록 설계하면 자료형이 바뀔 때마다 오버로딩해서 새로 만들 필요도 없고 재사용성도 높다! Generic C# Max Method using System; class Program { //IComparable인 자료형 모두에 대해 동작한다. private static type Max(type a, type b) wh..
논리회로에서 배우는 것들
논리회로에서 배우는 것들
2019.07.23논리회로는 무엇인가요? 컴퓨터가 어떤 입력값들에 대해 논리(불) 연산을 하는데 쓰이는 전자회로입니다. 가장 기본적인 회로로 AND, OR, NOT, NAND, NOR, XOR이 있으며 이 회로들을 조합하여 더 복잡한 회로들을 만듭니다. 논리회로라는 과목에서는 무엇을 배우나요? 일단 제가 논리회로에서 배운 것들을 정리해보면 다음과 같은 것들을 배운 것 같습니다. (한 학기가 지나서 잘 기억이 안 난다..ㅎㅎ) 1. Information의 종류들과 Digital System의 장점 2. Information을 bit로 Encoding하는 여러 가지 법들과 bit로 Encoding하기 위해 필요한 수학 3. Encoding 좋게 하는 법 4. Error Detection 5. Combinational Circ..
[Compiler] 0. 컴파일러란 무엇인가?
[Compiler] 0. 컴파일러란 무엇인가?
2019.07.21컴파일러는 Language Translater(번역기)와 같다 영-한 번역기가 영어를 한국어로 바꿔주듯 컴파일러도 Source 프로그램을 Target 프로그램으로 바꿔준다. 컴파일러의 단계는 크게 Analysis Part, Synthesis Part로 나눌 수 있다. 컴파일러는 가장 먼저 Analysis Part가 진행되며 Analysis Part 안에는 다음과 같은 단계가 있다. Lexical Analyzer (Scanner라고도 말한다) Syntax Analyzer (Parser라고도 말한다) Semantic Analyzer Intermediate Code Generator 위의 Analysis Part가 차례대로 진행되고 난 후에는 Synthesis Part가 진행되며 Synthesis Part 안..
[유니티] GameObject 없이 코드 실행하기
[유니티] GameObject 없이 코드 실행하기
2019.07.19GameObject와 무관하게 코드를 실행하는 법 유니티에서 코드를 실행하기 위해서는 항상 GameObject에 Script를 Component로 달아줘야 한다고 알고 있습니다. 하지만 RuntimeInitializeOnLoadMethod Attribute를 사용하면 GameObject에 안달아도 실행시킬 수 있습니다. (MonoBehavior를 상속 받지 않는 클래스여도 상관 없습니다.) 단순하게 Attribute만 달면 됩니다. 아래의 코드를 참고하세요. using UnityEngine; static class nonGameObjectScript { [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)] static void..
[C#] 구조체(struct)
[C#] 구조체(struct)
2019.07.19구조체의 정의 구조체는 관련된 변수들을 묶는 데 사용하는 값 형식입니다. 3차원 좌표 같은 것을 저장하기 위해서는 x, y, z 좌표를 float형으로 선언해서 저장하면 될 것입니다. float x;, float y;, float z; 하지만, 이 변수들은 개별적으로 존재하며 단체적으로 관리하기 어렵습니다! 이것이 따로 변수 x, y, z로 돌아다니는 것보다 뭉쳐서 저장하면 관리하고 추적하기 더 편하겠죠! 그럴 때는 구조체를 많이 씁니다. 먼저 3차원 좌표를 표현하기 위한 구조체를 만들어 봅시다! // 3차원을 표현하기 위해 만든 구조체 public struct Vector3 { public float x; public float y; public float z; } 구조체를 만들기 위해서는 struct..
[C#] 배열 - 다차원 배열, 가변 배열
[C#] 배열 - 다차원 배열, 가변 배열
2019.07.17C#에는 다차원 배열과 가변 배열이 있다. 두 종류의 배열의 차이와 선언 방법에 대해 간단히 알아보자! 다차원 배열 다차원 배열은 2차원, 3차원,... , n차원의 배열을 뜻한다. 다차원 배열을 보기 전에 먼저 1차원 배열을 살펴보자. 1차원 배열의 문법 타입[] 배열이름 = new 타입[배열크기]; 1차원 배열의 선언과 동시에 초기화 타입[] 배열이름 = new 타입[] { 요소1,요소2, ...}; // 예시 1 int[] myArray1 = new int[10]; myArray1[1] = 1; // 예시 2 int[] myArray2 = new int[] {1,2,3,4,5}; // 예시 3 string[] myArray3 = new string[] {"text1","text2","text3"};..
[C언어] Swap하기
[C언어] Swap하기
2019.07.16프로그래밍 언어로 변수의 값은 어떻게 Swap 해야 할까? 1. Swap using temporary variable 먼저 임시 변수(temporary variable)를 사용하는 방법이 있다. 내가 int형 변수 a와 b의 값을 바꿔주고 싶다고 해보자. int a = 3; int b = 5; 만약에 내가 a = b의 원래 값; b = a의 원래 값; 위와 같은 형식으로 두 변수의 값을 바꿔주려면 임시 변수가 하나 필요하다. 왜냐하면, 내가 a = b를 하는 순간 a의 원래 값은 b의 값으로 덮어씌워 져서 잃어버리기 때문이다. 내가 a = b를 하고 싶은데 a의 원래 값도 보존하고 싶다면 어떻게 해야 할까? int temp = a; 위와 같이 임시 변수(temp)에 a값 원래 값을 저장해 놓고 a에 b값..
유니티 meta 파일
유니티 meta 파일
2019.07.10유니티 *.meta 파일은 뭐길래 모든 Asset(파일)마다 생성이 될까? 유니티의 메타(meta) 파일은? Asset을 식별할 수 있게 하는 값이랑 그 Asset에 대한 설정 값, 예를 들어서 크기, pivot 위치, 상태, ... 등,을 저장하는 파일이다. 위의 사진을 보면 모든 asset(위의 사진에서는 스크립트)에 대응하는 메타 파일이 존재한다는 사실을 알 수 있다. 유니티의 메타 파일을 이해하려면 먼저 유니티가 Asset을 내부에서 처리하는 방식에 관해서 이해해야 한다. Asset 내부 처리 방식부터 알아보자. * 출처: 이 부분에 대한 내용은 [유니티 매뉴얼: Behind the Scenes]을 보면서 정리했습니다. Asset을 Import하거나 새로운 파일을 (유니티 Assets폴더 안에) ..
[C언어] 소수 구하기
[C언어] 소수 구하기
2019.07.08소수를 구하는 알고리즘은 여러 가지가 있다. 1 ~ 100까지의 소수를 출력하는 문제를 예로 들어서 알고리즘들을 간단히 정리해 보자. 더보기 소수(Prime Number)의 정의: 소수는 1보다 크고 그 숫자(자신)보다 작은 수 2개를 곱해서 만들 수 없는 수다. 2는 1보다 크고 2(자신)보다 작은 수(즉, 1)를 2개를 곱해서 만들 수 없으므로 소수이다. 10은 합성수(Composite Number: 1보다 크고 소수가 아닌 수)이다. ∵ 10 > 1, 2 × 5 = 10 문제: 1부터 100까지의 숫자 중 소수를 모두 출력해 보자. [방법 0] 그냥 풀어보기! (가장 간단한 방법!) 소수를 어떻게 구할까? 간단히 생각해보면 어떤 수가 소수이려면 내가 구하고자 하는 수(n)가 1보다 크고 n보다 작은..