-
코딩의 흑마법, 숏코딩
한국에서는 PS에 관한 서비스가 굉장히 많이 마련되어있습니다. 코드업, BOJ, koistudy, JUNGOL, oj.uz 등 수많은 한국 온라인저지(OJ) 사이트가 존재합니다. 대부분의 OJ에서는 각각의 문제에서 실행시간 등을 기준으로 사용자를 정렬하여 보여주는 ‘순위’ 페이지가 존재합니다. 이러한 순위에 도전함에 있어 필요한 상당히 괴상한 종류의 지적유희, 숏코딩을 소개하고자 합니다. 숏코딩의 목적은 단순합니다. “실행시간도, 메모리 사용량도 제한 안에만 들어가면 상관 없으니 무작정 짧은 코드를 짜보자!” 이 직관적이고 명료한 목표를 달성하기 위해서는, 비직관적이고 괴상한, 웬만해서는 쓰지 않을 법한 발상과 프로그래밍 언어에 대한 깊은...
-
캔위성 개발일지 0 -서론
머릿말 2021년 5월부터 8월까지 진행되었던 “캔위성체험경연대회” 과정에서 있었던 일들을 일지로 남겨보려 한다. 많은 사람들이 캔위성 개발 과정에서 어려움을 겪을 것이고, 나 역시 마찬가지였다. 내가 겪었던 어려움과 그 해결과정을 남기고, 각자가 이 일지를 읽고 자신이 처한 난관을 헤쳐 나가는데 도움을 얻었으면 한다. 객관적인 정보와 사실만을 남기려 노력하겠지만, 나의 주관적인 의견과 생각, 감정 또한 글에 다수 포함 될 수 있다는 점 유의바란다. 이번 글 ‘캔위성 개발일지0’은 배경적인 내용과 개인적이고 잡다한 것들로 구성되었고 본격적인 개발내용은 ‘캔위성 개발일지1’부터 시작...
-
컴퓨터는 색을 어떻게 표현할까? -RGB와 진수
빛의 삼원색은 R(빨강), G(초록), B(파랑)이다. 그림에서도 알 수 있다시피 빛은 합성할 수록 밝아지고, 적절히 합성해 모든 색을 만들 수 있다. 따라서 R,G,B 의 값(세기)를 알고 있으면 어떤 색을 표현할 수 있을 것이다. 컴퓨터는 이진법을 기본으로하며, 많은 곳에 이진법이 사용된다.. R,G,B 값 역시 0~255로 표현되는데, 이는 8자리 2진수, 2자리 16진수로 표현 할 수 있는 값의 범위이다. 진법과 진수 진수와 진법을 이야기하고 있는데, 이에 대해 잘 모르는 독자가 있을 것이다. 그러니 우선 진수와 진법에 대해 알아보려한다. 진법은...
-
알고리즘3
알고리즘의 효율 측정 첫 글에서 알고리즘은 문제를 해결하는 것이라 했다. 종이에 문제를 푼다고 가정해보자. 1분이 걸려 푸는 것이 좋은가, 100분이 걸려 푸는 것이 좋은가? 1장의 종이를 쓰는 것이 좋은가, 100장의 종이를 쓰는 것이 좋은가? 알고리즘도 비슷한 맥락이다. 적은 시간, 적은 자원을 사용하는 알고리즘을 일반적으로 효율적인 알고리즘이라 한다. 시간 복잡도 시간 복잡도는 실행시간이란 관점에서 알고리즘의 효율을 표기하는 방법을 말한다. 보통 최선의 경우, 최악의 경우, 평균 세 가지를 나타낸다. 빅오표기법 빅오 표기법은 최악의 경우를 나타낸다. 다음은 n을...
-
알고리즘2
서론 지난 글에서는 알고리즘의 어원, 개념, 특성에 대해 알아보았다. 알고리즘의 개념을 알았으니, 유명한 알고리즘들을 살펴보도록하자. 여러 알고리즘을 살펴보려면, 알고리즘을 ‘볼 수 있고’ 비교할 수 있어야하지 않겠는가? 그러니 우선 알고리즘의 표현 방법을 알아보려 한다. 알고리즘의 표현방법 알고리즘은 자연어, 프로그래밍 언어, 의사코드, 순서도 등의 방법으로 나타낼 수 있다. 하나씩 알아보자. 1. 자연어 우리가 일상에서 사용하는 모든 언어는 자연어이다. 영어, 한국어, 중국어 모두 자연어에 속한다. 우리가 평소 사용하는 언어이기 때문에 표현하고 이해하기 쉬울 수 있지만, 컴퓨터에게는 쉽지 않은...