문제 1부터 10까지 자연수를 각각 제곱해 더하면 다음과 같습니다 (제곱의 합).12 + 22 + ... + 102 = 3851부터 10을 먼저 더한 다음에 그 결과를 제곱하면 다음과 같습니다 (합의 제곱).(1 + 2 + ... + 10)2 = 552 = 3025따라서 1부터 10까지 자연수에 대해 "합의 제곱"과 "제곱의 합" 의 차이는 3025 - 385 = 2640 이 됩니다.그러면 1부터 100까지 자연수에 대해 "합의 제곱"과 "제곱의 합"의 차이는 얼마입니까? 연구 문제만 봐도 로직이 생각날 정도로 매우 직관적이고 간단한 문제다. 변수를 1부터 100까지 증가시키면서 '제곱의 합' 과 '합의 제곱' 을 구해 두 값의 차를 구하면 될 것 같다. 풀이 '제곱의 합' 과 '합의 제곱' 을 구할 변..
문제 1 ~ 10 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수는 2520입니다. 그러면 1 ~ 20 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수는 얼마입니까? 연구 이 문제는 1부터 20까지 모든 숫자의 최소공배수를 구하는 문제다. 분명 수학적 원리를 통해 이를 구하는 공식이 있겠지만, 그러한 공식을 검색하며 푸는건 마치 반칙을 저지르는 기분이므로 필자는 노트와 팬을 꺼내 규칙을 찾아보기로 했다. 1~10의 최소 공배수가 2520 임을 알고있으므로 이를 토대로 분석해본 결과, 작은 수부터 1을 제외한 어떠한 공약수가 없을 때 까지 소수로 전체 숫자를 나눈 남은 모든 숫자의 곱이 최소공배수이다. 위와 같은 결론을 도출할 수 있었다. 글로만 봐서는 잘 이해가 되지 않을 수 있기 때문에 그림과 함께..
문제 앞에서부터 읽을 때나 뒤에서부터 읽을 때나 모양이 같은 수를 대칭수(palindrome)라고 부릅니다.두 자리 수를 곱해 만들 수 있는 대칭수 중 가장 큰 수는 9009 (= 91 × 99) 입니다.세 자리 수를 곱해 만들 수 있는 가장 큰 대칭수는 얼마입니까? 풀이 필자 개인적으로는 매우 재미있는 문제라고 생각한다. 방법은 많겠지만 필자는 아래와 같은 순서로 문제를 풀고자 했다. 해당 숫자가 대칭수인지 확인하는 함수를 작성100~999 숫자의 곱의 모든 조합을 확인 곱의 조합 중 가장 큰 대칭수를 출력 대칭수는 앞으로 읽어도, 뒤로 읽어도 같은 모양인 숫자를 말한다. 어떤 숫자 x 가 대칭수인지 확인하기 위해서는 해당 숫자를 뒤집은 y를 구한 뒤 x == y 를 확인해야한다. Array를 만들어 ..
문제 어떤 수를 소수의 곱으로만 나타내는 것을 소인수분해라 하고, 이 소수들을 그 수의 소인수라고 합니다.예를 들면 13195의 소인수는 5, 7, 13, 29 입니다.600851475143의 소인수 중에서 가장 큰 수를 구하세요. 풀이 우선 어떤 숫자가 소수인지 아닌지를 구분할 수 있는 소수 판별 알고리즘을 작성해보자. 소수의 정의는 다음과 같다. " 1과 자기 자신 외에 어떠한 숫자와도 나누어 떨어지지 않는 수. " 이러한 사실을 기반으로 소수 판별 알고리즘을 아래와 같이 작성할 수 있다. /* 소수인경우 true를 리턴 */private boolean isSosu(long x) { boolean isSosu = true; if (x == 1 || x == 2) return true; for (lon..
문제 피보나치 수열의 각 항은 바로 앞의 항 두 개를 더한 것이 됩니다. 1과 2로 시작하는 경우 이 수열은 아래와 같습니다.1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...짝수이면서 4백만 이하인 모든 항을 더하면 얼마가 됩니까? 풀이 피보나치 수열의 규칙은 다음과 같다.처음 항은 1이다.두번째 항은 2이다.1과 2를 제외한 n번째 항은 (n-1번째 항)+(n-2번째 항) 이다. 위 규칙을 기반으로 피보나치 수열을 구하는 알고리즘은 다음과 같이 표현할 수 있다. while(true) { fiboIdx_03 = fiboIdx_01 + fiboIdx_02; fiboIdx_01 = fiboIdx_02; fiboIdx_02 = fiboIdx_03; } 아래와 같이 위 알고리즘에 짝수이면서 ..
문제 10보다 작은 자연수 중에서 3 또는 5의 배수는 3, 5, 6, 9 이고, 이것을 모두 더하면 23입니다.1000보다 작은 자연수 중에서 3 또는 5의 배수를 모두 더하면 얼마일까요? 풀이 첫번째 문제인 만큼 아주 쉬운 문제가 나왔다. 알고리즘은 아래와 같다.정수형 변수를 1부터 999까지 1씩 증가시키면서 해당 숫자가 3 혹은 5와 나누어 떨어지는지 확인한다.알고리즘 1의 결과가 참일 경우 해당 숫자를 정수형 변수에 더한다. 위 알고리즘을 기반으로 작성한 코드는 다음과 같다. public class Problem_01 { public static void main(String[] args) { // TODO Auto-generated method stub int sum = 0; for(int i..
프로젝트 오일러란? 결론부터 말하면 수학 문제를 풀고, 답을 공유하고 점점 어려운 문제에 도전할 수 있는 웹사이트다.https://projecteuler.net/about (오리지날 사이트)http://euler.synap.co.kr/ (한국어 번역 사이트)회원가입을 하고 문제에 대한 올바른 답을 정답란에 넣어 제출하면 정답여부를 확인할 수 있고, 정답인 경우에는 포럼이 열려 내 코드를 공유하거나 다른 사람이 올린 코드를 살펴볼 수 있다. 오리지날 사이트는 영어로 되어있어 어려워 하는 분들이 많아 사이냅소프트에서 친절하게 한국어 번역 사이트를 운영하고 있다. 필자가 생각하는 이 사이트의 장점은 아래와 같다. 알고리즘 능력을 키울 수 있다. 답을 공유할 수 있어 다른 사람의 풀이 방식을 보며 새로운 관점으..
- Total
- Today
- Yesterday
- 코딩
- compose bottomsheet
- 안드로이드
- 코딩문제
- 안드로이드 스튜디오
- kotlin 기초
- Programming
- 코틀린
- 자바
- 안드로이드 바텀시트
- 영어발음
- 개발자
- Java
- 프로그래밍
- android studio
- live template
- LiveTemplate
- Android
- 코틀린 기초강의
- 영어회화
- php
- 프로젝트오일러
- 코틀린 기초
- 런탭
- 안스 템플릿
- 안드로이드 컴포즈
- 안드로이드 스튜디오 라이브 템플릿
- 컴포즈 바텀시트
- 문제풀이
- Kotlin
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |