하노이의 탑, 무엇인가? (파이썬 코드 포함)

이 포스트에서는 ‘하노이의 탑’에 대해 설명합니다. ※ 이 포스트는 ChatGPT의 도움으로 작성되었습니다. 하노이의 탑(Tower of Hanoi)은 19세기 프랑스 수학자 에두아르 뤼카(Édouard Lucas)에 의해 고안된 퍼즐입니다. 이 퍼즐은 세 개의 막대와 그 위에 쌓인 여러 개의 원판으로 구성됩니다. 원판은 크기가 다른 여러 개가 있으며, 막대 위에 큰 원판이 작은 원판 아래에 놓이는 순서로 쌓여 있습니다. 원판들을 … “하노이의 탑, 무엇인가? (파이썬 코드 포함)” 더 읽기

파이썬으로 음력 및 양력 날짜 변환하기

이 포스트에서는 파이썬으로 음력 및 양력 날짜를 변환하는 방법을 설명합니다. 이 기능을 사용하려면 korean-lunar-calendar 라이브러리가 필요합니다. 이 라이브러리는 다음 명령어로 설치할 수 있습니다. pip install korean-lunar-calendar 0.3.1 버전 기준 음력 1000년 01월 01일 부터 2050년 11월 18일까지, 양력 1000년 02월 13일 부터 2050년 12월 31일까지 지원합니다. 한국천문연구원 기준이며, 네트워크 연결은 불필요합니다. 라이브러리 설치 후, 우선 … “파이썬으로 음력 및 양력 날짜 변환하기” 더 읽기

파이썬으로 위드마크 공식 구현해 보기

이 포스트에서는 파이썬으로 위드마크 공식을 구현하는 코드를 간략하게 작성합니다. 가수 김호중의 음주운전 사건이 언론에 오르며 떠들썩한 가운데 ‘위드마크 공식’이라는 용어가 나와 화제가 되기도 했습니다. 위드마크 공식이란 1931년 스웨덴의 생리학자 에릭 마테오 프로셰 위드마크(Erik Matteo Prochet Widmark)가 고안한 공식으로, 음주운전 후 너무 오랜 시간이 지나 정확한 혈중 알코올 농도를 알 수 없을 경우 음주운전 시점의 혈중 … “파이썬으로 위드마크 공식 구현해 보기” 더 읽기

파이썬으로 콰인 만들기

이 포스트에서는 파이썬으로 콰인을 만드는 방법을 서술합니다. 콰인(Quine)은 미국의 철학자 윌러드 밴 오먼 콰인(Willard Van Orman Quine)에서 유래한 것으로, 자기 자신의 소스 코드를 출력하는 프로그램을 말합니다. 소스 코드와 출력 결과가 토씨 하나 틀리지 않고 완전히 같아야 하기 때문에 만들기가 까다로운 것으로 알려져 있는데, 파이썬에서는 문자열 포매팅 기호를 이용해 좀 더 간단하게 만들 수 있습니다. 우선 … “파이썬으로 콰인 만들기” 더 읽기

파이썬으로 피즈버즈 숫자 출력 프로그램 만들기

파이썬으로 만든 피즈버즈(FizzBuzz) 출력 프로그램 예제입니다. 피즈버즈 게임이란 우리나라의 369 게임과 비슷한 놀이로, 숫자를 1부터 하나씩 늘려가면서 부르되 3의 배수인 경우 ‘Fizz’로, 5의 배수인 경우 ‘Buzz’로, 3의 배수이면서 동시의 5의 배수인 경우 ‘FizzBuzz’로 부르는 놀이입니다. 여기서는 1부터 100까지의 숫자 중에서 Fizz와 Buzz를 출력하는(둘 다 아닌 경우 그 숫자를 출력) 예를 보여드립니다. for i in range(1, … “파이썬으로 피즈버즈 숫자 출력 프로그램 만들기” 더 읽기

C언어의 포인터 설명 (배열 접근)

이 포스트에서는 C언어에서 포인터로 배열에 접근하는 방법을 설명합니다. 우선 다음 코드를 봅시다. 다음 코드는 2020년 정보처리기사 실기시험 문제로 출제된 바 있는 C언어 코드입니다. #include <stdio.h> int main() { char *p = “KOREA”; printf(“%s\n”, p); printf(“%s\n”, p+3); printf(“%c\n”, *p); printf(“%c\n”, *(p+3)); printf(“%c\n”, *p+2); } 이 코드는 다음과 같이 실행됩니다. KOREA EA K E M 이렇게 나오는 … “C언어의 포인터 설명 (배열 접근)” 더 읽기

C++의 변수 입력 예제

C++의 Hello, world! 예제 편에서 iostream 라이브러리를 통해 오리지널 C언어의 printf() 함수를 대신해서 std::cout 객체를 사용해 콘솔에 텍스트를 출력하는 방법을 알아보았습니다. 여기서는 iostream 라이브러리를 통해 입력받은 값을 변수에 대입하는 방법을 알아보기로 합니다. 먼저, 오리지널 C언어로 된 다음 코드를 봅시다. #include <stdio.h> struct Profile { char name[20]; int age; }; int main() { struct Profile pr; … “C++의 변수 입력 예제” 더 읽기

C++의 Hello, world! 예제

C++의 Hello, world! 문구를 출력하는 프로그램 예제입니다. 먼저, 오리지널 C언어에서 Hello, world! 문구를 출력하는 프로그램의 소스를 보겠습니다. #include <stdio.h> int main() { printf(“Hello, world!\n”); return 0; } 이 소스코드는 C++에서도 실행이 가능합니다. 또한, C++에서는 라이브러리를 <cstdio>로 써도 <stdio.h>로 쓴 것과 같습니다. C++에서는 이 stdio.h 라이브러리와 거의 같은 기능을 하는 라이브러리로 iostream이 있습니다. 속도는 다소 느려지지만, … “C++의 Hello, world! 예제” 더 읽기

C언어에서 콘솔의 키 입력 받기 (윈도우즈)

이 포스트에서는 C언어에서 콘솔의 키 입력을 처리하는 방법을 설명합니다. 참고: 이 방법은 윈도우에서만 가능한 방법입니다. 여기에 사용된 <conio.h> 라이브러리는 윈도우만 지원하는 비표준 라이브러리입니다. 따라서 리눅스에서는 다른 방법으로 구현해야 합니다. 윈도우의 경우는 GUI 기반 프로그램이 주류이고 TUI는 옛 DOS 시절의 프로그램이나 리눅스 등에서 주로 볼 수 있습니다. 하지만 윈도우에서도 명령 프롬프트 창을 기반으로 돌아가는 TUI 프로그램이 … “C언어에서 콘솔의 키 입력 받기 (윈도우즈)” 더 읽기

C언어에서 배열로 문자열 다루기

C언어에서 배열로 문자열을 다루는 방법을 설명합니다. C언어는 자바나 파이썬 등과는 다르게 문자열(string) 자료형이 따로 존재하지 않습니다. 그 대신 문자(char) 자료형이 있어서 문자의 배열로 문자열을 이루게 됩니다. C++에서는 string 클래스가 있어서 문자열을 편리하게 다룰 수 있지만, 오리지널 C에서는 문자의 배열 형태로 다루게 됩니다. 다음 코드를 봅시다. #include <stdio.h> int main() { char gfriend[6][6] = { “Sowon”, … “C언어에서 배열로 문자열 다루기” 더 읽기