0x.프로그래밍/Python
-
0x09.3이 나타나는 시간을 전부 합한 값 구하기0x.프로그래밍/Python 2017. 7. 6. 09:41
0x09.3이 나타나는 시간을 전부 합한 값 구하기 http://codingdojang.com/scode/473?answer_mode=hide 이 문제의 요구사항은 다음과 같다. 디지털 시계에 하루동안 3이 표시되는 시간들을 초로 구하는 것이다. 디지털 시계의 형식은 시간과 분만 표시된 형식으로 예를 들어 00:00~00:01까지 60초동안 00:00이 유지되는 것과 같은 형식이다. 즉, 코딩을 통해 구해야 하는 시간은 00:03, 00:31 그리고 13:02과 같이 3이 표시되는 시간들의 초의 총합을 구하는 것이다. 시간에 3이 포함되어 있는 경우는 60*60만큼, 그 외에는 60초만큼의 시간을 result에 더했고 값으로 29700을 얻을 수 있었다. 물론 더 깔끔하고 이해가 쉬운 코드를 작성할 수도..
-
0x08.Special Sort0x.프로그래밍/Python 2017. 7. 5. 10:14
0x08.Special Sort 출처 : http://www.careercup.com/question?id=5201559730257920 n개의 정수를 가진 배열이 있다. 이 배열은 양의정수와 음의 정수를 모두 가지고 있다. 이제 당신은 이 배열을 좀 특별한 방법으로 정렬해야 한다. 정렬이 되고 난 후, 음의 정수는 앞쪽에 양의정수는 뒷쪽에 있어야 한다. 또한 양의정수와 음의정수의 순서에는 변함이 없어야 한다. 구글 전화면접에 사용된 문제라고 한다. temp을 이용하여 swap하는 방법은 너무 복잡해 질 것 같아서, 배열의 append를 활용하여 각각을 저장한 다음 결과값을 합쳐서 출력하는 코드를 작성하였다.
-
0x07.Multiples of 3 and 50x.프로그래밍/Python 2017. 7. 3. 11:39
0x07.Multiples of 3 and 5 https://projecteuler.net/problem=1 If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.Find the sum of all the multiples of 3 or 5 below 1000. 3과 5의 배수를 모두 찾아서 더하는 프로그램이다. 아래와 같이 쉽게 풀 수 있었다. 1000까지의 자연수들 중 3과 5의 배수는 총 467개이고 이들은 합한 결과는 234168이 된다는 걸 알 수 있다.
-
0x05.10~1000까지 각 숫자 분해하여 곱하기의 전체 합 구하기0x.프로그래밍/Python 2017. 6. 29. 11:21
0x05.10~1000까지 각 숫자 분해하여 곱하기의 전체 합 구하기 예로, 10~15까지의 각 숫자 분해하여 곱하기의 전체 합은 다음과 같다. 10 = 1 * 0 = 0 11 = 1 * 1 = 1 12 = 1 * 2 = 2 13 = 1 * 3 = 3 14 = 1 * 4 = 4 15 = 1 * 5 = 5 그러므로, 이 경우의 답은 0+1+2+3+4+5 = 15 코딩도장에 나오는 문제를 오늘도 풀어보았다. 물론 그렇게까지 효율적인 코드를 작성하지는 않은 것 같다. digit2는 2자리 수의 연산을, digit3는 3자리 수의 연산을 계산해주는 함수이다. 1000같은 경우에는 어차피 결과값이 0이 나오기 때문에 바로 calc=0으로 계산을 하였다. 나름 쉽게 잘 작성했다고 생각되긴 하는데,,, 어쨋든 결과값..
-
0x04.1차원의 점들이 주어졌을 때 가장 거리가 짧은 것의 쌍을 출력0x.프로그래밍/Python 2017. 6. 28. 10:16
0x04.1차원의 점들이 주어졌을 때 가장 거리가 짧은 것의 쌍을 출력 http://codingdojang.com/scode/408?answer_mode=hide 오늘도 코딩도장 문제이다 1차원의 점들이 주어졌을 때, 그 중 가장 거리가 짧은 것의 쌍을 출력하는 함수를 작성하시오. (단 점들의 배열은 모두 정렬되어있다고 가정한다.) 예를들어 S={1, 3, 4, 8, 13, 17, 20} 이 주어졌다면, 결과값은 (3, 4)가 될 것이다. 그리 어렵지 않은 쉬운 문제였다.
-
0x03.10진수를 n진수로 변환하기0x.프로그래밍/Python 2017. 6. 27. 11:07
0x03.10진수를 n진수로 변환하기 http://codingdojang.com/scode/458#answer-filter-area 역시 코딩도장의 문제이다. 재귀함수를 사용하여 구현하는데 일단 T는 16진수까지의 나올수 있는 나머지의 모임이다. quotient와 remainder는 뜻 그대로 몫과 나머지를 뜻하는데, divmod 함수를 통해 몫과 나머지를 리턴받는다. 몫이 0이라는 것은 더이상 계산할 필요가 없으니 마지막 리턴을 통해 끝낸다. 만약 몫이 0이 아니라면 재귀를 통해 다시 convert 함수를 실행하고 그 당시의 나머지를 리턴한다.
-
0x02.CamelCase를 Pothole_case 로 바꾸기0x.프로그래밍/Python 2017. 6. 26. 11:34
0x02.CamelCase를 Pothole_case 로 바꾸기 CamelCase는 자바스크립트와 같은 언어에서 자주 사용하는 형태로 camelCase, pwnWiz 와 같이 두 단어를 나누어 표시하기 위해 대문자를 사용하는 것과 같은 형태를 뜻한다. Pothole case는 파이썬과 같은 언어에서 주로 사용되는데 camel_case, pwn_wiz 와 같이 두 단어를 나누어 표시하기 위해 '_' 를 사용하는 형태이다. re 라이브러리를 사용하여 isdigit(), isupper()로 구분되는 단어를 찾고 그 단어에 '_'를 추가하여 리턴시키는 함수를 다음과 같이 구현하였다. 코딩도장의 문제인데 여러가지 해법이 많은 재미있는 문제이다.