프로그래밍/[ Python ]

Q. 문자열을 뒤집는 함수를 작성하라. 입력값은 문자 배열이며, 리턴 없이 리스트 내부를 직접 조작하라. """예제 1""" # 입력 ["h", "e", "l", "l", "o"] # 출력 ["o", "l", "l", "e", "h"] """예제 2""" # 입력 ["H", "a", "n", "n", "a", "h"] # 출력 ["h", "a", "n", "n", "a", "H"] 풀이 1. 투 포인터를 이용한 스왑 # 리턴 없이 리스트 내부를 직접 조작하라는 제약사항이 있으므로 아래와 같이 두개의 포인터로 내부를 # 스왑하는 방식으로 풀이가 가능하다. def reverseString(self, s: List[str]) -> None: left, right = 0, len(s) - 1 while left..
Q. 주어진 문자열이 팰린드롬인지 확인하라. 대소문자를 구분하지 않으며, 영문자와 숫자만을 대상으로 한다. 예제 1 # 입력 "A man, a plan, a canal: Panama" # 출력 true 예제 2 # 입력 "race a car" # 출력 false 풀이 1. 리스트로 변환 def isPalindrome(self, s: str) -> bool: """ 전처리 """ strs = [] for char in s: if char.isalnum(): # 영문자, 숫자만을 대상 strs.append(char.lower()) # 대소문자 구문 없으므로 소문자로 변환 # -> strs = ['a', 'm', 'a', 'n', 'a', 'p', 'l', 'a', 'n', 'a', # 'c', 'a', 'n..
리스트 컴프리헨션 "홀수인 경우 2를 곱해 출력하라"는 조건에 대해서 List Comprehension을 사용하면 다음과 같이 간단히 코딩할 수 있다. [n * 2 for n in range(1, 10+1) if n % 2 == 1] List Comprehension을 사용하지 않을 경우 코드가 훨씬 길고 a라는 별도의 리스트 변수 또한 필요해진다. a = [] for n in range(1, 10 + 1): if n & 2: a.append(n * 2) print(a) 제너레이터 모든 변수를 메모리에 생성하지 않고, 생성 조건만을 가져 메모리에 대한 효율성을 얻을 수 있다. a = [n for n in range(1000000)] # List b = range(1000000) # Generator 위 ..
코딩 인터뷰를 위한 온라인 테스트 플랫폼 해커랭크 (https://www.hackerrank.com) 코딜리티 (https://www.codility.com) 리모트인터뷰 (https://www.remoteinterview.io) 프로그래머스 (https://programmers.co.kr) 백준 (https://www.acmicpc.net/) 리트코드 (https://leetcode.com/) 프로젝트 오일러 (https://projecteuler.net) 온라인 코딩 테스트의 사전 준비사항 - 코드 스니펫 준비하기 (GitHub Gist, https://gist.github.com/)
python에서 제공하는 표준 라이브러리인 bisect에 대해서 정리하겠습니다. bisect bisect는 이진 검색 알고리즘을 이용하여 입력받은 시퀀스를 검색하는 기능을 제공하는 함수 입니다. # bisect.bisect(a, x, lo=0, hi=len(a)) # 리스트 a에 x값이 들어갈 자리의 인덱스값을 반환합니다. temp = [1, 3, 4, 5] bisect.bisect(temp, 2) # 출력값 : 1 bisect_right, bisect_left bisect는 bisect_right와 동일하며, 이 두 함수는 리스트 a에 x와 동일한 값이 존재하면 해당 값의 뒷 인덱스 값을 반환합니다. bisect.bisect_right(temp, 3) # 출력값 : 2 하지만, bisect_left는 ..
파이썬에서 슬라이싱(slicing)이란, 연속적인 객체(리스트, 튜플, 문자열)들에 대해서 특정 범위를 지정 선택해서 부분 객체들을 가져오는 기법을 의미합니다. 즉 연속적인 객체의 일부분을 복사해서 가져온다고 생각하면 됩니다. 기본 형태 만약 temp라는 리스트가 있고 다음과 같은 값을 갖고 있다고 할 때, 아래와 같은 형태로 슬라이싱 할 수 있습니다. temp = [1, 2, 3, 4, 5] # 슬라이싱 기본 형태 # temp[start:end:step] start : 시작 위치 end : 끝 위치 (포함 x) step : stride라고도 하며 몇개씩 가져올지 정할 수 있습니다. (옵션) 예제 temp[1:] # [2, 3, 4, 5] temp[:-1] # [1, 2, 3, 4] temp[2:4] #..
파이썬에서 문자열을 활용하는 다양한 방법들 중 자주 사용되는 방법들에 대해서 정리해보도록 하겠습니다 s = "Python is Easy" s.upper() # 대문자로 변경 # PYTHON IS EASY s.lower() # 소문자로 변경 # python is easy s.split() # 공백 기준 문자열 나누기 # ['Python', 'is', 'Easy'] s.upper() # 공백 포함 문자열 나누기 # ['Python is Easy'] s_1 = '123' s_2 = 'abc' s_3 = s_1 + s_2 s_1.isdigit(), s_2.isdigit() # 숫자로만 구성되어 있으면 True, 아니면 False # True False s_1.isalpha(), s_2.isalpha() # 문자..
이번 포스트에서는 정말 간단하게 python에 pickle을 활용하여 데이터를 저장하고, 저장된 데이터를 불러오는 코드를 알아보겠습니다. pickle은 파이썬의 모든 객체(object)에 대해서 있는 그대로 저장할 수 있는 모듈입니다. pickle은 객체를 바이너리 파일에 저장하기 때문에 아래와 같이 파일을 읽을 때 'wb', 'rb' 처럼 바이너리 형식을 사용해야 합니다. pickle.dump / pickle.load import pickle temp_dict = {'name': 'S', 'id': 1} # 데이터 저장 with open('filename.pkl', 'wb') as f: pickle.dump(temp_dict, f, protocol=pickle.HIGHEST_PROTOCOL) # 데이터..
sssssein
'프로그래밍/[ Python ]' 카테고리의 글 목록 (3 Page)