목록프로그래밍 (9)
이쁜왕자 만쉐~~
* * * * * * * * * * * * * * * 위와 같은 출력 결과를 내는 프로그램을 작성하시오 라는 문제가 있다. 아래 예시는 C 언어로 작성했지만, 프로그래밍 언어와는 딱히 상관이 없다. 프로그래머 A - 초보(?) 프로그래머 B - 고수(?) 인터넷에 코딩 초보와 고수라는 짤이 돌아 다닌다. 해당 게시물에서는 왼쪽이 초보, 오른쪽이 고수 라고 나온다. 정말 그러할까? 만약 정말 요구사항이 처음 나온 그대로에서 바뀌지 않는다는 100% 확신이 있다면 오른쪽 형태로 코딩해도 상관 없고, 그것이 고수 맞다. 하지만, 현실을 그렇지 않다. 현실에서 코딩은 요구사항이 계속 바뀐다. 몇가지 간단한 예제를 들어 보자. 1. 문제를 5줄이 아니라 10줄로 출력해 보자. 왼쪽은 루프 안에 5 를 10으로 바..
C 언어를 비롯하여 각종 C-like 언어들은 대부분 배열 인덱스로 i 를 씁니다. int i; int a[10]; for (i=0;i
"Hello World without Semicolon" 이라고, hello world 를 출력하는 C 프로그램을 작성하는데, 세미콜론(;) 을 사용하지 말고 작성하라는 문제가 있습니다. 일단 C 표준을 완전히 따르면서, 컴파일 워닝조차 없는 답은 아직 없는 것 같습니다. 일단 C 표준에서는 int main() 을 사용하도록 되어 있기 때문에, 반드시 return 0; 가 필요하고, 여기에서 세미콜론이 사용됩니다. 다만, return 을 생략하더라도 컴파일러가 이정도는 워닝만 출력하고 알아서 처리해주기 떄문에, 약간의 융통성을 발휘할 수 있습니다. 아니면 표준을 어기고 void main() 을 쓰는 방법도 있습니다. 어느 것을 선택하든 워닝은 발생합니다. 문제의 핵심은 printf("hello world..
문제1) 아라비아 숫자로 입력을 주면 로마 숫자로 출력하기 input : 2021 output : MMXXI 문제2) 로마 숫자로 입력을 주면 아라비아 숫자로 출력하기 input : MMXXI output : 2021 --------- 표에는 없지만 500 = D
C 언어에서는 변수의 타입이 아주 요상하게 정의되어 있다. Each compiler is free to choose appropriate sizes for its own hardware, subject only to the restriction that shorts and ints are at least 16 bits, longs are at least 32 bits, and short is no longer than int, which is no longer than long. 이게 TCPL 에 써있는 그대로 긁어 온 것이다. short : 16비트 이거나 이보다 크다. int : 16비트 이거나 이보다 크다. 또한 short 보다 크거나 같다. long : 32비트 이거나 이보다 크다. 또한 int ..
C언어에서 콜론(colon, : ) 이 사용 되는 곳을 모두 나열하라. 라는 문제가 있다. 정확히 3가지 용법으로 사용된다. 1. 삼항 연산자 (ternary operator) (a>b) ? a : b 2. 비트 필드 (bit field) struct { unsigned int one_bit : 1; unsigned int two_bits : 2; } s; 3. 레이블 (label) - switch 또는 goto 용으로 사용된다. switch (a) { case 1 : // do something; break; default : // do something; break; }
"왜 디스크드라이브는 C: 부터 시작하는가?"이를 검색해 보면, 어느정도 설명되어 있지만 잘못된 내용이 좀 있다.이것을 이해하려면 컴퓨터의 역사를 거슬러 올라 가야 한다. 최초의 IBM PC 는 1981년 발표된 5150 모델이다. 이름 그대로 personal computer 즉 '개인용 컴퓨터'이다. 이 모델은 2개의 5.25인치 플로피 디스크 드라이브를 장착되어 출시되었고, Microsoft 에서 판매한 PC-DOS 1.0 이 운영 체제로 설치되어 있었다.그리고, 이때부터 플로피 디스크 드라이브는 차례대로 A 드라이브와 B 드라이브로 할당되어 사용되었다.플로피 디스크가 무엇인가요?이 사진처럼 생긴 저장장치로 가장 왼쪽은 8인치, 중간은 5.25인치 오른쪽은 3.5인치 규격이다. 가장 큰게 용량이 더 ..
C/C++ 언어를 비롯 대다수의 프로그래밍 소스 코드는 코드 그 자체를 웹에 올리는 게 쉽지가 않다. 특히 때문에, HTML 로 직접 작성하는 경우 아주 지랄스럽기 그지없다. 웹 편집기를 쓰는 경우는 좀 낫지만 indentation 이나 highlight 등이 어렵다는 문제도 있다. 그렇기에 소스 코드를 HTML 로 변환해주는 전문 번역 툴이 있다. 구글에 C2HTML, C++2HTML, C HTML 변환 같은 검색어로 검색해 보면 여러가지 변환 툴이 있음을 확인해 볼 수 있다. 그런데, 검색하다 보니깐, VIM 에서도 지원한다고 한다. http://blog.naver.com/taeyeung2/100123114848 VIM 명령어 창에 :runtime! syntax/2html.vim 라고만 쳐..
여기서 파티션(partition)은 하드디스크 파티션이 아니라 수학의 정수론에 나오는 파티션이다. http://en.wikipedia.org/wiki/Partition_(number_theory) 파티션이란 어떤 수를 여러개의 0보다 큰 정수로 자르는 방법에 대한 내용이다. 예를 들어 4 라는 수는 4, 3+1, 2+2, 2+1+1, 1+1+1+1 이라는 5가지 방법으로 표현할 수 있다. 작은 수는 손으로 해도 되지만, 수가 커질수록 손으로 할만한 수준이 아니게 된다. 예를 들어 n = 10 일때는 겨우 42 가지밖에 안되지만, n = 100 인 경우는 1억 9천만 가지의 분할 방법(정확히는 190569292)이 존재한다. 이쯤 되면 컴퓨터의 도움 없이 뭔가를 한다는 건 불가능하다. 여하튼, 10개의 동..