본문 바로가기

코딩

(9)
[effective C#] 1장 C# 언어 요소 (아이템 5 ~ 7) 아이템5: 문화권별로 다른 문자열을 생성하려면 FormattableString을 사용하라 아이템4 에서 다룬 문자열 보간 기능의 결과로 생성되는 반환값은 문자열일 수도 있지만 FormattableString을 상속한 타입일 수도 있다. 다음 코드는 FormattableString 타입의 객체를 이용하여 문화권과 언어를 지정하여 문자열을 생성하는 방법을 나타낸다. public static string ToGerman(FormattableString src) => string.Format(null, System.Globalization.CultureInfo.CreateSpecificCulture("de-de"), src.Format, src.GetArguments()); public static string..
백준 3300번 - 무어기계 파이썬(pypy3) 풀이 문제 무어 기계는 상태에 의해서 출력이 결정되는 유한 상태 기계이다. 무어 기계는 이름은 미국의 수학자이자 컴퓨터 과학자 Edward F. Moore의 이름을 따서 지었다. 무어 기계의 상태 전이는 입력에 의해서 정해진다. 예를 들어, 입력이 "aabba"이면, 아래와 같은 무어 기계의 출력은 "PRETTY"가 된다. 위의 그림에서 동그라미는 상태를 나타내고, 화살표 위의 글자는 입력 심볼을 나타낸다. 상태 중 하나는 시작 상태로 디자인 되어져 있다. 이 상태는 출발 노드가 없는 화살표로 나타나 있다. 이 경우에 시작 상태는 1번 상태이다. 상태 N과 출력 심볼 S는 N/S로 나타낸다. 대부분 경우에 무어 기계는 사이클을 가진다. 이 문제에서는 사이클이 전혀 없는 무어 기계를 다루며, 이런 종류의 기계를..
C언어 코딩도장 후기 학부과정에서 배울 C프로그래밍 과목을 예습하기 위해, 앞으로 배울 C++을 더 깊게 이해하기 위해 코딩도장 C언어를 통해 공부를 진행하였다. 진척도 99%를 달성하는데 약 14일이 소요되었고, 약 30시간정도 투자한듯 하다. 좋았던점 1. 학부 과정보다 폭넓은 범위 지금까지 학위를 위한 C언어 수업을 3번 들어보는데(고등학교, 독학사, 방통대) 이 수업 범위를 합친것보다 코딩도장에서 더 많은 범위의 과정이 배울 수 있었다. 함수 포인터나 보이드 포인터에 대한 내용은 프로젝트때 자주 마주쳤지만 학부과정에 포함된 것을 본적은 없었다. 코딩도장에서는 이와 같은 C언어의 중,고급 스킬들도 입문강의처럼 가독성이 좋으면서도 쉽게 설명해주어 많은 궁금증을 해소할 수 있었다. 2.다양한 예시와 심사문제 코딩도장의 예시..
창의력 그리기 VR (오큘러스 퀘스트, 핸드트래킹, 포톤 네트워크) 1. 프로젝트 개요 인터넷의 발달, 인공지능과 빅데이터의 등장, 세분화된 지식발달의 한계로 똑똑한 사람의 정의가 바뀌고 있다. 기존에는 그저 머리속에 많은 지식을 담고 있는 사람이 똑똑한 사람이였지만, 요즘엔 지식이 아무리 많은 개인이 있더라도 인터넷의 정보보다 많이 담고 있기가 힘들다. 남들을 따라가고 현재 있는 지식을 잘 습득하는 것 만으로는 큰 의미가 없는 시대가 오고 있다. 이러한 시대에서 살아남기 위해서는 창의성과 통합의 기술이 필요하다. 이런 창의성을 기르기 위한 도구로는 형상화, 패턴인식, 놀이, 몸으로 생각하기가 뽑히고 있다. 창의성을 기르기 위해서 그러한 활동들을 담고 있는 예술과 놀이의 중요성이 높아지고 있다. 또, 이러한 예술과 놀이는 혼자 할때보다 다른 사람들과 협동해서 할 때 긍정..
누워서 읽는 알고리즘 서평 코딩/개발 관련 서적을 읽다보니 '임백준' 이라는 분의 이름이 자주 눈에 띈다. 여러 개발 관련 서적의 번역에 참여하시고, '누워서 읽는 알고리즘'처럼 직접 집필한 책도 있다. 책을 읽는 개발자분들이 개발 관련 서적으로 가장 추천하는 책들중 임백준님이 관여하신 책들도 많다. 이번에는 임백준님의 대표작이자, 알고리즘 입문 서적으로 좋은 평을 가지고 있는 '누워서 읽는 알고리즘'에 대해 글을 써보고자 한다. ​ 임백준님이 직접 쓰신 책은 처음인데, 이 책을 읽어보니 이분이 왜 유명한지 느끼게 되었다. 글빨이 정말 대단하다. 개발자가 쓴 책이라는 느낌보다는 전문 작가가 알고리즘에 대해 쓴 책을 읽는 느낌이다. 문장이 읽기 편한것을 넘어 아름답다는 느낌이 들면서, 이 책의 본질인 '알고리즘'에 대한 내용도 부족..
유니티로 배우는 게임 수학 서평 단순히 출퇴근용으로만 자동차를 운전한다면 엔진 원리 등 내부 구조는 몰라도 큰 상관이 없다. 요즘은 무인자동차가 개발되는 추세로 기술이 발달할수록 자동차를 운전하기 위한 필요 지식은 적어지고 있다. 하지만 레이싱카를 모는 프로 카레이서라면 엔진 원리와 자동차 내부 구조를 완벽하게 알아야 하고 경기 트랙 구조도 이해해야 한다. 그래야지 프로로써 생존할 수 있다. ​ 프로그래밍과 게임 개발도 이와 같다. 단순히 취미로 정말 기본적인 기능만 구현한다면 프로그래밍의 기반이 되는 수학을 몰라도 큰 상관이 없다. 또한 게임엔진의 발달로 개발이 더욱 쉬워져 중학생들도 취미로 게임을 만드는 시대가 왔다. 하지만 프로개발자로써 경쟁자보다 더 효율적인 개발, 최적화된 성능을 위해서라면 수학을 제대로 알아야 한다. 수학을 ..
[C#] LINQ 집계 작업, 표준 쿼리 연산자 표준 쿼리 연산자는 LINQ 패턴을 형성하는 메서드입니다. 집계 작업은 컬렉션을 특정 조건으로 계산하여 하나의 값을 출력합니다. ​ 예를 들어 1달 동안 일일 온도 값을 기록한 컬렉션에서 평균 온도를 계산한다던지, 학생들의 성적을 기록한 컬렉션에서 가장 점수가 높은 학생을 찾는 작업을 수행할 수 있습니다. ​ 이러한 작업을 집계 작업이라고 하며, LINQ에서는 집계 작업을 위해 'Aggregate, Average, Count, Max, Min, Sum'함수를 지원하고 있습니다. 이번 글에서는 이중에서 'Aggregate'에 대해서만 설명해보고자 합니다. 집계 작업이 전체적으로 간단하기도 하고, Aggregate 가장 어려우면서 가장 많이 사용하는 함수이기 때문입니다. Aggregate에 대해 설명하기 전..
[C#] LINQ 프로젝션 작업, 표준 쿼리 연산자 표준 쿼리 연산자는 LINQ 패턴을 형성하는 메서드입니다. 프로젝션 작업은 이후에 사용할 속성으로만 구성된 새 양식으로 개체를 변환하는 작업을 가리킵니다. ​ 예를 들어 문자열의 배열로 이루어진 개체가 있다고 하고 여기서 첫글자만 뽑아서 활용하고 싶을 때, 이 개체의 문자열에서 첫글자만을 남기는 새로운 양식으로 변환하는 작업을 생각하시면 됩니다. ​ 이러한 작업을 프로젝션이라 하며, LINQ에서는 프로젝션 작업을 위해 'Select'와 'SelectMany'를 지원하고 있습니다. Select의 경우 모든 소스 값에 대해 하나의 결과 값을 생성합니다. 따라서 전체 소스 컬렉션과 동일한 개수의 요소가 들어 있는 컬렉션을 만듭니다. 반면, SelectMany는 각 소스 값에서 연결된 하위 컬렉션을 포함하는 하..