일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 오에스
- 컴공
- 개발
- 북리뷰
- 컴퓨터공학과
- OS
- 오퍼레이팅시스템
- 너비우선탐색
- 알고리즘
- 구현
- bfs
- 문제풀이
- 브루트포스
- Operating System
- 스택
- c++
- 정석학술정보관
- 코테
- 백준
- Stack
- DP
- cs
- coding
- 자료구조
- Computer science
- 컴공과
- 정석
- 코딩
- vector
- 그래프
- Today
- Total
목록알고리즘/Project_Euler (8)
Little Jay
사실 머리로 생각만 하면 간단한 문제인데 코드로 구현하려고 하니까 조금은 복잡한 문제였다. def solve(): A=[0, 0, 1, 8, 2, 2, 8, 9, 0, 3, 4, 0, 0] A.sort() i= A.count(0) if len(A) 2: count+=(A.pop()+A.pop())*i i*=10 count+=sum(A)*i return count
간단한 bfs문제. https://euler.synap.co.kr/quiz=3 입력받아야 하는 수가 좀 많아서 그렇지 bfs만 돌리면 간단하게 풀 수 있는 문제였다. #include #define endl '\n' using namespace std; const int dx[] = { 1, -1, 0, 0 }; const int dy[] = { 0, 0, 1, -1 }; int display[1920][1080]; bool visited[1920][1080]; int bfs(int x, int y) { visited[x][y] = true; queue q; q.push({ x, y }); int size = 1; while (!q.empty()) { auto cur = q.front(); q.pop();..
마스크를 쓰지 않고는 밖을 다니면 안 되는 코로나19 시대입니다. 코로나19가 장기화되면서 코로나 블루라는 말이 나올 정도로 우울한 사람들이 많아지고 있습니다. 세계적인 전기자동차 회사 경영자인 '얼른 마스크'씨는 자신의 전기자동차를 타는 고객들이 조금이라도 행복할 수 있기를 바라며 판매하는 전기자동차 번호판 일련번호 4자리를 행복 수(happy number)로 채우고자 합니다. 행복 수는 각 자릿수의 제곱의 합으로 변환하는 과정을 반복할 때 언젠가는 1에 도달하는 수입니다. 예로, 13 → 1x1 + 3x3 = 10 → 1x1 + 0x0 = 1이므로 13은 행복 수입니다. 행복 수가 아닌 것은 슬픈(sad) 수 또는 불행(unhappy) 수라고 불립니다. 예로, 4 → 4x4 = 16 → 1x1 + 6..
피보나치 수에 대한 문제입니다. 피보나치 수는 아래와 같이 정의됩니다. f(1) = 1 f(2) = 2 f(3) = f(1) + f(2) = 1 + 2 = 3 f(4) = f(2) + f(3) = 2 + 3 = 5 f(5) = f(3) + f(4) = 3 + 5 = 8 ... f(n) = f(n-2) + f(n-1), n>=3 a와 b라는 두 수가 주어져 있을 때 두 수 사이에는 몇 개의 피보나치 수가 있을까요? 예를 들어 10과 100 사이에는 총 5개(13, 21, 34, 55, 89)의 피보나치 수가 있고 모두 더한 값은 212입니다. 12345678999과 99987654321 사이에도 몇 개의 피보나치 수가 있습니다. 이 구간 내의 모든 피보나치 수를 더한 값이 기념품을 받을 수 있는 열쇠입니다..
소인수를 구하는 다양한 방법이 있지만 효율적인 알고리즘을 위해서라면 O(n) 시간 안에 구하는 것이 최적인 것 같다. 에라토스테네스 체에서 영감을 얻어 나누어 떨어질때 수를 나누어주면 해결될 것 같다. '''어떤 수를 소수의 곱으로만 나타내는 것을 소인수분해라 하고, 이 소수들을 그 수의 소인수라고 합니다. 예를 들면 13195의 소인수는 5, 7, 13, 29 입니다. 600851475143의 소인수 중에서 가장 큰 수를 구하세요. ''' num = 600851475143 denom = 2 target = [] while num > 0: if num % denom == 0: num /= denom target.append(denom) elif num == 1: break else: denom += 1 ..

1부터 5까지의 수를 영어로 쓰면 one, two, three, four, five 이고,각 단어의 길이를 더하면 3 + 3 + 5 + 4 + 4 = 19 이므로 사용된 글자는 모두 19개입니다. 1부터 1,000까지 영어로 썼을 때는 모두 몇 개의 글자를 사용해야 할까요? 참고: 빈 칸이나 하이픈('-')은 셈에서 제외하며, 단어 사이의 and 는 셈에 넣습니다. 예를 들어 342를 영어로 쓰면 three hundred and forty-two 가 되어서 23 글자, 115 = one hundred and fifteen 의 경우에는 20 글자가 됩니다. 프로젝트 오일러는 문제를 푼 사람만 입장 가능한 포럼이라는 곳이 존재하는데, 거기 있는 코드들을 보고 깜짝 놀랐다. 처음에는 selenium으로 htt..
피보나치 수열의 각 항은 바로 앞의 항 두 개를 더한 것이 됩니다. 1과 2로 시작하는 경우 이 수열은 아래와 같습니다. 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ... 짝수이면서 4백만 이하인 모든 항을 더하면 얼마가 됩니까? def pibo(): fi = [1,2] for k in range(0, 4000001, 1): fi.append(int(fi[-1]) + int(fi[-2])) return fi print(pibo()) 시간이 많이 걸리는건 어쩔 수 없다!
10보다 작은 자연수 중에서 3 또는 5의 배수는 3, 5, 6, 9 이고, 이것을 모두 더하면 23입니다. 1000보다 작은 자연수 중에서 3 또는 5의 배수를 모두 더하면 얼마일까요? result = 0 for k in range(1,1000): if k % 3 == 0 or k % 5 == 0: result += k k += 1 print(result) 사실 이 방법은 노가다로 푸는 것 등차 급수로 풀 수 있다고 하는데 계절 학기 끝나면 다시 풀어봐야겠다 이제 3학년이니까 열심히 코딩 해야지