본문 바로가기

python13

회문 판단 회문이란, 바로 읽으나 거꾸로 읽으나 동일한 문자열을 의미한다. 특정 문자열이 회문임을 판단하기 위해선, 여러가지 방법을 사용할 수 있다. 1. 재귀함수 이용 # 회문여부 확인 함수 - 입력받은 문자열이 회문이면 True, 아니면 False 반환 def is_palindrome(word): if len(word) < 2: # 종료조건 return True if word[0] != word[-1]: return False # 만약 양 끝의 글자가 같지 않다면 False 리턴 return is_palindrome(word[1:-1]) # 재귀함수 호출 - 탐색범위 좁히기 2. 슬라이싱 이용 def is_palindrome(word): if word == word[::-1] # 슬라이싱을 활용해 원본과 원본을.. 2021. 8. 17.
2차원 배열 회전 다음과 같은 2차원 배열이 있다고 할 때, 배열을 시계 방향으로 90도 회전하는 방법을 알아보자. nums = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 다음은 2차원 배열을 90도 회전하기 위한 함수이다. # 2차원 배열을 인자로 받아 90도 회전한 결과를 리턴하는 함수 def rotate(arrs): n = len(arrs) arrs_90 = [[0] * n for _ in range(n)] for i in range(n): for j in range(n): arrs_90[i][j] = arrs[n-1-j][i] return arrs_90 180도는 다음과 같다. 일정 규칙을 찾아, 인덱스를 적절하게 변경해주는 것이 중요하다. def rotate(arrs): n = len(arrs).. 2021. 8. 17.
Baby-gin Game Baby gin game - 0 ~ 9 사이의 숫자 카드에서 임의의 카드 여섯 장을 뽑았을 때, 3장의 카드가 연속적인 번호를 갖는 경우를 run 이라고 하고, 3장의 카드가 동일한 번호를 갖는 경우를 triplet 이라고 한다. 이 때, 6장의 카드가 run과 triplet 으로만 구성된 경우를 baby-gin 이라고 한다. - 6자리의 숫자를 입력 받아 baby-gin 여부를 판단하는 코드를 작성해보자 # greedy 로 접근 cards = [6, 6, 6, 6, 8, 9] # counts 배열 만들기 counts = [0] * 12 # run 을 확인하기 위한 조건에서 IndexError 를 방지하기 위해 리스트의 우측에 0값 2개를 패딩 for card in cards: counts[card] +.. 2021. 8. 10.
최댓값 알고리즘 - 2이상의 길이를 가진, 숫자로만 구성된 리스트가 있을 때 최댓값을 산출하는 알고리즘을 알아보자. # 최댓값 구하기 알고리즘 # 임의의 리스트 생성 numbers = [3, 1, 2, 5, 4] # max_value 초기화 max_val = numbers[0] # 반복문을 통해 max value 산출 for i in range(1, len(numbers)): if max_val < numbers[i]: max_val = numbers[i] # 리스트의 최댓값 출력 print(max_val) - 그렇다면, 최댓값이 아니라 최댓값의 인덱스를 구하는 알고리즘은? # 최대값의 인덱스 구하기 # 임의의 리스트 생성 numbers = [3, 1, 2, 5, 4] # max_idx 초기화 max_val = 0 # .. 2021. 8. 9.