Python/알고리즘 문제풀이 3

[파이썬/알고리즘] 스택을 활용한 가장 큰 수 문제

파이썬을 이용한 가장 큰 수 구하기 문제 문제) 주어진 숫자의 자릿수에서 m개의 수를 제거해서 가장 큰 수를 만드는 프로그램을 작성하라. 입력 10진수 n과 제거해야할 자릿수의 개수 m이 주어진다. 풀이 n, m = map(int, input().split()) n = list(map(int, str(n))) #숫자n을 스트링으로 바꿔야 하나씩 접근 가능. stack=[] for x in n: while stack and m>0 and stack[-1] 앞에 2를 제거 6 -> 앞에 2, 5 제거 3개밖에 제거 못했기 때문에, 뒤에서 2개를 더 제거한다.(내림차순이 되어 있기 때문에.) stack[:-2] 참고) https://study3.tistory.com/6 [자료구조] 스택, 큐 stack(스택)..

[파이썬/알고리즘] 재귀함수를 이용한 이진수 출력

파이썬을 이용한 이진수 출력 문제 문제) 10진수가 입력되면 2진수로 변환해 출력하는 프로그램을 작성하라. 입력 첫 줄에 10진수 n이 주어진다. 풀이 n=int(input()) def DFS(x): if x==0: return else: DFS(x//2) print(x%2, end='') DFS(n) DFS(깊이 우선 탐색) 우선, 십진수를 이진수로 바꾸는 방법을 알아야한다. (간단히 설명하자면, 십진수를 2로 나누어 나온 나머지를 역순으로 나열하면 된다.) 예를 들어 n=11 일 때, 작동하는 과정은 아래와 같다. DFS(11) 호출, 함수의 호출 정보를 스택에 기록, print(11%2, end='')는 시행되지 못하고 DFS(11//2) 호출로 넘어감 DFS(5) 호출, 함수의 호출 정보를 스택에..

[알고리즘] 회문 문자열 파이썬, python 회문 문자열 풀이

파이썬 회문 문자열 풀이 (python algorithm) 문제) 각 문자열이 회문 문자열(대칭)일 경우 True, 그렇지 않을 경우 False를 출력하는 프로그램. 회문(palindrome)? 앞에서부터 읽으나 뒤에서부터 읽으나 동일한 단어나 구 EX) mom, madam, level, dad, wow, noon 문자열 인덱싱 (string indexing) a ='level' 인덱스를 나타내는 방법은 아래처럼 두가지가 있다. l e v e l index 0 1 2 3 4 index -5 -4 -3 -2 -1 이 경우, 문자열이 대칭인지 확인하기 위해서는 a[0]==a[-1] and a[1]==a[-2] 를 만족해야 한다. i=0 일 때 -i-1=-1 i=1 일 때 -i-1=-2 가 된다. 파이썬 풀이..