본문 바로가기

algorithm

문자열에서 홀수인 숫자를 제곱하여 더하라 @마크다운 로켓펀치를 돌아다니다 재밌는 예제를 보았다. ``` ab2v9bc13j5jf4jv21```이러한 문자열이 있을 때 홀수인 숫자만 제곱하여 더한 값을 출력하라는 것이었다. 처음 봤을땐 정규식으로 숫자만 뽑고 %2하면 되겠구나 했다. > &1 가 %2보다 월등히 빠르지가 않다. 이상하다... 파이썬이라 그런가? 아무튼 %2로 홀짝을 구분해보려다 정규식으로 홀수만 추출을 한다면 더 간단하지 않을까 해서 정규식을 열심히 찾았다. ``` def find_odd_number(text): result = sum([int(i) ** 2 for i in re.findall('[0-9]*[13579]', text)]) return result``` 앞자리가 숫자인경우를 찾고 *를 사용하여 반복시켰다. 뭔가 쉬우.. 더보기
tryhelloworld Lv1. 자릿수더하기 @마크다운 [문제풀러가기](https://programmers.co.kr/learn/challenge_codes/116) ```sum_digit함수는 자연수를 전달 받아서 숫자의 각 자릿수의 합을 구해서 return합니다. 예를들어 number = 123이면 1 + 2 + 3 = 6을 return하면 됩니다. sum_digit함수를 완성해보세요.``` # 내가 푼 코드```def sum_digit(number): ssum = 0 for index in str(number): ssum += int(index) return ssum # 아래는 테스트로 출력해 보기 위한 코드입니다.print("결과 : {}".format(sum_digit(123)));``` # 풀이 파이썬의 장점이 잘 드러나고 있다. 형변환.. 더보기
tryhelloworld Lv1. 제일 작은 수 제거하기 @마크다운 ```rm_small함수는 list타입 변수 mylist을 매개변수로 입력받습니다. mylist 에서 가장 작은 수를 제거한 리스트를 리턴하고, mylist의 원소가 1개 이하인 경우는 []를 리턴하는 함수를 완성하세요. 예를들어 mylist가 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10, 8, 22]면 [10, 22]를 리턴 합니다.``` 내가 푼 코드 ```def rm_small(mylist): mylist.remove(min(mylist)) return mylist # 아래는 테스트로 출력해 보기 위한 코드입니다.my_list = [4, 3, 2, 1]print("결과 {} ".format(rm_small(my_list))) ``` 풀이 : 고맙게도 함수명에 rm이라고 .. 더보기
tryhelloworld LV1. 짝수와 홀수 @마크다운 ```evenOrOdd 메소드는 int형 num을 매개변수로 받습니다. num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하도록 evenOrOdd에 코드를 작성해 보세요. num은 0이상의 정수이며, num이 음수인 경우는 없습니다. ``` 내가 푼 코드```def evenOrOdd(num): s = "" if num %2 is 0: s = 'Even' else: s = 'Odd' return s #아래는 테스트로 출력해 보기 위한 코드입니다.print("결과 : " + evenOrOdd(3))print("결과 : " + evenOrOdd(2))``` 풀이 : 2로 나누었을때 나누어 떨어진다면 짝수 아니면 홀수이니까 아주쉽다. > 한줄로> return "Even" if .. 더보기
tryhelloworld Lv1. 평균구하기 @마크다운 ```def average(list): 함수를 완성해서 매개변수 list의 평균값을 return하도록 만들어 보세요. 어떠한 크기의 list가 와도 평균값을 구할 수 있어야 합니다.``` 내가 푼 코드```def average(list): return (sum(list)/len(list)) # 아래는 테스트로 출력해 보기 위한 코드입니다.list = [5,3,4] print("평균값 : {}".format(average(list)));``` 풀이 : 평균구하는 공식 전체합/갯수 > 유의점 /은 실수 나누기 // 정수 나누기 더보기
try helloworld Lv1. x만큼 간격이 있는 숫자 @마크다운 [문제 풀러가기](https://programmers.co.kr/learn/challenge_codes/135) ```number_generator함수는 x와 n을 입력 받습니다. 2와 5를 입력 받으면 2부터 시작해서 2씩 증가하는 숫자를 5개 가지는 리스트를 만들어서 리턴합니다. [2,4,6,8,10]4와 3을 입력 받으면 4부터 시작해서 4씩 증가하는 숫자를 3개 가지는 리스트를 만들어서 리턴합니다. [4,8,12]이를 일반화 하면 x부터 시작해서 x씩 증가하는 숫자를 n개 가지는 리스트를 리턴하도록 함수 number_generator를 완성하면 됩니다. ``` 내가 푼 코드```def number_generator(x, n): number_list = [] for i in range(1.. 더보기