일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Radio
- lirc
- 대칭수
- C언어
- API
- PiFaceCAD
- palindrome
- 소인수 구하기
- open weather map
- #소수판별
- #프로젝트 오일러
- 라즈베리파이
- 배수 더하기
- project euler
- 피보나치
- #c언어
- mp3
- 최소공배수
- Raspberry Pi
- 프로젝트 오일러
- #Project Euler
- Today
- Total
목록ㅇㅅㅇ (13)
ㅇㅅㅇ
Problem 7 소수를 크기 순으로 나열하면 2, 3, 5, 7, 11, 13, ... 과 같이 됩니다.이 때 10,001번째의 소수를 구하세요. 풀이 개인적으로 이렇게 심플한 문제가 좋다. 소수 판별은 10001번째 까지만 구하면 되기 때문에, 그냥 숫자 하나씩 증가시키면서 나눠지는지 안나눠 지는지 테스트 하는 방식으로 진행하였다. 소수가 뭔지 모르는 사람은 없다고 생각한다. 123456789101112131415161718192021222324252627#include int main(){ int num = 3, cnt = 1, flag = 0; // 3부터 소수판별 시작 -> count인 cnt는 1로 시작 while (1) { for (int i = 2; i
Problem 6 1부터 10까지 자연수를 각각 제곱해 더하면 다음과 같습니다 (제곱의 합).12 + 22 + ... + 102 = 3851부터 10을 먼저 더한 다음에 그 결과를 제곱하면 다음과 같습니다 (합의 제곱).(1 + 2 + ... + 10)2 = 552 = 3025따라서 1부터 10까지 자연수에 대해 "합의 제곱"과 "제곱의 합" 의 차이는 3025 - 385 = 2640 이 됩니다. 그러면 1부터 100까지 자연수에 대해 "합의 제곱"과 "제곱의 합"의 차이는 얼마입니까? 풀이 쉬어가는 문제인 것 같다. 따로 풀이할 내용이 없다. 그냥 합의 제곱과 제곱의 합의 차를 구하면된다. 1234567891011121314#include int main(){ int sum1 = 0, sum2 = 0;..
Problem 5 1 ~ 10 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수는 2520입니다.그러면 1 ~ 20 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수는 얼마입니까? 풀이 사실 이문제는 계산기로 풀어서 부랴부랴 코드를 작성하였다. 그러다보니 좀 길어진듯 하다. 문제를 해결하는 법은 그닥 어렵지 않다. 1~10사이의 숫자들의 최소 공배수를 구하면되는데, 나는 소인수 분해를 이용해서 구해주었다. 아래 표는 1에서 10까지 가면서 최소공배수를 구해가는 과정이다. 소인수최소 공배수 1 1 1(제외) 2 2 2 3 3 2 x 3 4 2^2 2^2 x 3 5 5 2^2 x 3 x 5 6 2x3 2^2 x 3 x 5 7 7 2^2 x 3 x 5 x 7 8 2^3 2^3 x 3 x 5 x 7 9 3^22..
Problem 4 앞에서부터 읽을 때나 뒤에서부터 읽을 때나 모양이 같은 수를 대칭수(palindrome)라고 부릅니다. 두 자리 수를 곱해 만들 수 있는 대칭수 중 가장 큰 수는 9009 (= 91 × 99) 입니다. 세 자리 수를 곱해 만들 수 있는 가장 큰 대칭수는 얼마입니까? 풀이 이제 문제가 조금씩 난이도가 증가하는 느낌이 든다. 프로그래밍 적으로 대칭수를 판별하는 것이 이번 문제의 핵심인 듯 하다. 방법에는 여러가지가 있을 수 있다. 그중에서 숫자를 나누기연산을 통해 12345를 54321로 뒤집어주는 방법과 12345를 문자열로 만드는 방법이 많이 사용된다. 나는 두번째 방법과 비슷하게 int형 배열을 만들어서 문제를 해결하였다. check_palindrome 이라는 함수를 만들어서 대칭수를..
Problem 3 어떤 수를 소수의 곱으로만 나타내는 것을 소인수분해라 하고, 이 소수들을 그 수의 소인수라고 합니다.예를 들면 13195의 소인수는 5, 7, 13, 29 입니다.600851475143의 소인수 중에서 가장 큰 수를 구하세요. 풀이 보통 프로그래밍을 배우는 과정에서 "소수를 판별하는 법" 같은건 한번씩 거치는 과정이라 거기에 얽매이면 안되는 문제중 하나이다. 나도 처음에는 별 생각없이 막 숫자 하나씩 증가시키면서 이게 소순지 아닌지 판단하는 코드를 작성했는데 돌리자마자 이건 아니라는걸 체감하고 바로 다시 작성했다(시간이 너무 오래 걸린다). 다시 문제를 살펴보면, 우리가 해야 할 건 소인수분해이다. 중학굔지 고등학굔지에서 배운 소인수 분해를 생각해보자 "15를 소인수분해 해라!" 라고하..
Problem 2 피보나치 수열의 각 항은 바로 앞의 항 두 개를 더한 것이 됩니다. 1과 2로 시작하는 경우 이 수열은 아래와 같습니다. 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ... 짝수이면서 4백만 이하인 모든 항을 더하면 얼마가 됩니까? 풀이 피보나치 수열을 프로그래밍 언어로 구현할 때 크게 두가지가 있는데, while문이나 for문을 사용하는 방법이 있고 재귀함수를 사용하여 구현하는 방법이 있다. 반복문을 사용해서 바로바로 더해가는 것이 재귀함수를 사용하는 것보다 빠르지만, 갑자기 재귀함수가 써보고 싶어서 재귀함수로 구현하였다. 아직까진 머리를 쓰는 것보다는 손 스트레칭하는 듯한 난이도... 123456789101112131415161718192021222324int fi..
problem 1 10보다 작은 자연수 중에서 3 또는 5의 배수는 3, 5, 6, 9 이고, 이것을 모두 더하면 23입니다.1000보다 작은 자연수 중에서 3 또는 5의 배수를 모두 더하면 얼마일까요? 풀이 첫번째 문제라 그런지 쉬웠다. 코드에 크게 설명할 부분도 없을 정도. 그냥 1부터 1000까지 증가시켜가며, 3과 5의 %(Modular)연산을 통해서 3과 5의 배수를 더해가며 답을 구했다. 12345678void main() { int sum = 0; for (int i = 3; i
이번에는 전 포스트에서 했던 라즈베리파이를 활용한 GPIO를 파이썬으로 컨트롤 해주자. 만들어볼 것은 저번과 같이 led 4개가 있고 이 led들이 순차적으로 불이 들어온다. 이 때 우리가 369게임을 하는 것 처럼 자신의 차례에 3, 6, 9,가 들어가면 불을 켜지않고 그냥 지나가게 하는 것이 우리가 만들 프로그램이다. 프로그램 이름은 domino369로 지었다. 파이썬에서 GPIO를 컨트롤하기 위해서는 RPi.GPIO 모듈이 필요한데 기본적으로 지원이 되니 따로 설치해 줄 필요는 없다. 크게 준비할 것도 없으니 바로 시작해보자. 1. 파이썬 코드 작성 제일 처음 해줘야 할 것은 RPi.GPIO와 time 모듈을 import 해주는 것이다. 12import RPi.GPIO as GPIOimport ti..
라즈베리파이의 GPIO를 이용하여 LED와 Switch를 컨트롤 해보자 1. GPIO사용 준비하기 GPIO를 사용하기위해 먼저 WiringPi를 인스톨 해주어야 한다. $ sudo apt-get update $ sudo apt-get upgrade $ git clone git://git.drogen.net/wiringPi $ cd wiringPi $ git pull origin $ ./build 위의 과정을 따라하면서 별다른 에러가 발생하지 않았다면 성공한 것이다. 현재 GPIO가 어떤 상태인지 확인하기 위해 아래의 명령어를 쳐보자 $ gpio readall 이런식으로 터미널에 표현이 된다. 우리가 확인할 부분은 노란색 부분이다. BCM부분이 GPIO핀 번호라고 생각하면된다. 여기서 아래의 명령어를 한번..
얼마전에 학교에서 돌아오는데 집앞에 있는 간이 체육시설? 에서 아이들이 놀고있는 것이 보였다. 예전에는 나도 거기서 하루종일 놀곤 했는데 요즘에도 아이들이 많이 찾아오는지 궁금해서 타임랩스 비디오를 만들어 확인해보기로 하였다. 물론 포스팅 제목처럼 라즈베리파이와 파이카메라를 활용할 예정이다. 1. 카메라 준비하기 필요한 준비물은 raspberry pi 와 pi camera이다. pi camera는 정전기에 매우 민감한 제품이니 만지기 전엔 항상 몸에서 정전기를 제거한뒤 만져야 한다. 라즈베리파이와 몸값이 비슷하니 소중히 다뤄주자... 아래의 과정을 따라서 장착하자 카메라 장착이 끝났으면 이제 라즈베리파이가 카메라를 사용할 수 있도록 설정해주어야 한다. $ sudo raspi-config 위의 명령어를 입..