본문 바로가기

알고리즘

재귀함수를 이용한 부분집합 구하기 1. 프로그래밍 인사이트에서 발간한 알고리즘 트레이닝을 시작했습니다. 2. 첫장에 재귀를 사용해서 부분집합을 구하는 알고리즘이 나오는데 재귀 함수 따라가다가 멘붕이 와서 정리해둡니다. 으악! Q. 원소가 n개인 집합의 모든 부분집합을 생성해보자. ex) {1, 2, 3}의 부분집합은 공집합{}, {1}, {2}, {3}, {1,2}, {1,3}, {2,3}, {1,2,3} 입니다. 이 부분집합을 재귀 알고리즘을 이용해 구한 예제 코드가 있습니다. (C++) 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 32 33 34 35 36 37 38 39 40 41 42 43 44 #include #include.. 더보기
숫자 대각선 나열하기 1 2 4 7 11 3 5 8 12 16 6 9 13 17 20 10 14 18 21 23 15 19 22 24 25 이런식으로 뽑아야 하는 문제다.처음에는 이게 무슨 패턴이 있는지 알기 힘들었다.숫자도 더해보고, 위아래 값 비교도 해보고 하는데 일관성이 없어서 이거 파악하는 데만도 한참 걸린듯. 그러다 발견한 패턴!아래 그림처럼 숫자가 대각선으로 증가하는 걸 알 수 있었다. 좌표로 보면, 1 : (0,0) 2: (0.1)3: (1,0) 4: (0.2)5: (1,1)6: (2,0) 7: (0,3) 8: (1,2) 9: (2,1) 10: (3,0) 이렇게 되는데, 자세히 보면... x좌표는0010123012341234234344 이런식으로 바뀌고y좌표는0102103210432104321432434 대강 이.. 더보기
약수의 합 javascript function sumDivisor(num) {var answer = 0; var divisor = 1; while(num >= divisor){ var addNum = num % divisor == 0 ? divisor : 0; answer += addNum; divisor++; }; return answer;} // 아래는 테스트로 출력해 보기 위한 코드입니다.console.log(sumDivisor(12)); 이번거는 비교적 간단했음.. 더보기
제일 작은 수 제거하기 python def rm_small(mylist): # 함수를 완성하세요 smallest = mylist[0] index = 0; selected = 0; for number in mylist : if number < smallest : smallest = number selected = index index = index + 1 print(smallest) del mylist[selected] return mylist # 아래는 테스트로 출력해 보기 위한 코드입니다.my_list = [4, 3, 2, 1]print("결과 {} ".format(rm_small(my_list))) 더보기
최대공약수 최소공배수 javascript 프로그래머스라는 알고리즘 문제를 풀 수 있는 재미있는 사이트가 있다.알고리즘 연습하는데 도움이 많이 될 것 같다.재미있다. function gcdlcm(a, b) { var answer = []; var bigger = a >= b ? a : b; var smaller = a = 0; sIndex--){ if(biggerDivisorArr[bIndex] == smallerDivisorArr[sIndex]){ answer[0] = biggerDivisorArr[bIndex]; bIndex = 0; break; } } } // 최소공배수 var multiple; var k = 1; while(true){ multiple = bigger * k++; if(multiple%smaller == 0){ answer.. 더보기
누워서 읽는 알고리즘 - 임백준 이북리더기 구입후 처음으로 읽은 책이다 :)누워서 읽는 알고리즘. 증말 재미있다. 골치 아프고 어려울 거라고만 생각했던 알고리즘의 인식을 바꿔준 고마운 책이다.알고리즘이 이렇게 흥미진진한 거였다니!! 기억에 남는 이야기 중 하나는 RSA 암호화 알고리즘을 만든 세사람의 이야기였다.개인적으로 저 일화를 보면서 왜 개발자는 문제를 해결하는 사람이라고 했는지... 그 말을 정확히 이해할 수 있었다.그 열정, 끈기, 답이 없을지도 모르는 미지의 세계를 향해 나아가는 그 도전정신!! 뚝심!!!! 개발자가 멋있을 수도 있구나. 아니, 이게 진짜 개발자구나. 제대로 된 개발자는 진짜 멋진 거였구나.그런 생각이 들었다. 아, 그리고 공감이 갔던 구절을 하나 추가하고 싶다. 실전 프로그래밍을 하다 보면 '창조적'이고 '.. 더보기