파이썬 알고리즘 기본을 계속 하고 있다.
지난 번에 공부 했던 힙 정렬, 삽입 정렬, 선택 정렬, 버블 정렬 등도 계속 복습도 해야하는데..
주말에 해야하는데 참 쉽지 않다.
아무튼 이번 포스팅은 정말 기본적인 알고리즘이다.
숫자 뒤집는 방법(거꾸로 출력하는 방법), 소수 값 출력하는 방법과 배수 출력하는 방법이다.
너무 간단한다
먼저 배수이다
만약 3의 배수를 구하고 싶으면 어떤 값을 3으로 나누었을 때 0으로 떨어지면 그 값은 3의 배수이다
3과 5의 배수를 동시에 구하고 싶으면 n % 3 == 0 and n % 5 == 0 의 조건이 성립되면 된다
이 조건을 가지고 코드를 작성하면 된다. 아래와 같다.
숫자를 거꾸로 출력하는 방법(혹은 문자열을 거꾸로 출력)은 reverse 방법을 이용하는 방법이나 뒤에서 접근해서 출력하는 방법도 있겠지만
(파이썬으로 하면 뭐 for문을 -1부터 0까지 -1만큼 감소하면서 index을 하면 되겠지)
단순히 숫자를 거꾸로 출력하는 방법은 재귀 함수를 이용해서 호출이 가능하다
그리고 정수의 자리수(자릿수) 계산 방법을 이용해서 재귀 함수 호출을 이용한다.
예를 들어, 123 % 10 = 1의 자리수(3)이다
(123 / 10 ) % 10 = 10의 자리수(2) 이다
(123 / 100) % 10 = 100의 자리수 1이다.
이런식으로 접근하면 된다.
그래서 def f(n)을 정의하는데 n <= 0이면 return하고 그렇지 않으면 n과 10을 나눈 나머지를 출력한다.
그리고 재귀 함수를 호출하여 n을 10으로 나눠준다.
그러면 거꾸로 출력이 된다!
소수를 구하는 방법은 1과 자기 자신을 제외한 어떠한 수로 나눠지면 안된다.
즉, 1과 자기 자신을 제외한 어떠한 수로 나눠진다? 그거는 합성수다. 즉, 소수가 아니다
간단하게 이렇게 가능하다. i = 2부터 시작하면 된다(1부터 시작x)
그리고 n 전까지 반복문을 돌면서 만약 i 값이 나눠지게 된다면 소수가 아니니 break를 건다.
그리고 while문이 끝났을 때 i와 n 값이 같게 되면 그건 소수이다. break가 걸리지 않고 쭉 돌았기 때문
이렇게 소수를 체크할 수 있다
'알고리즘&자료구조' 카테고리의 다른 글
알고리즘 퀵 정렬(quick sort)란? 파이썬으로 구현까지 (2) | 2019.05.23 |
---|---|
파이썬 알고리즘 공부 - 최대공약수, 최소공배수 구하기 (4) | 2019.05.07 |
힙 정렬(heap sort)이란? 힙 정렬 공부하기 - 파이썬 자료구조 공부 (2) | 2019.04.24 |
합병정렬(merge sort) 혹은 병합정렬에 대해서 공부하자 - 파이썬 코드 (0) | 2019.04.23 |
파이썬으로 자료구조, 알고리즘 공부하기! 버블 정렬(bubble sort), 쉘 정렬(shell sort) (0) | 2019.04.23 |