전체 글 47

[문자열 조작] 로그 파일 재정렬

* leetcode 937. Reorder Log Files Q. 로그를 재정렬하라. 기준은 다음과 같다. 로그의 가장 앞 부분은 식별자다. 문자로 구성된 로그가 숫자 로그보다 앞에 온다. 식별자는 순서에 영향을 끼치지 않지만, 문자가 동일할 경우 식별자 순으로 한다. 숫자 로그는 입력 순서대로 한다. # 입력 logs = ["dig1 8 1 5 1", "let1 art can", "dig2 3 6", "let2 own kit dig", "let3 art zero"] # 출력 ["let1 art can", "let3 art zero", "let2 own kit dig", "dig1 8 1 5 1", "dig2 3 6"] 풀이 1. 람다와 + 연산자를 이용 def reorderLogFiles(self, l..

[문자열 조작] 문자열 뒤집기

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..

[1-2] 파이썬

리스트 컴프리헨션 "홀수인 경우 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 위 ..

[1-1] 코딩 인터뷰

코딩 인터뷰를 위한 온라인 테스트 플랫폼 해커랭크 (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/)