programing/Algorithm
-
[Programmers] 문자열을 정수로 바꾸기programing/Algorithm 2021. 1. 10. 18:09
문자열을 정수로 바꾸기 연습문제 level 1 python3 def solution(s): isPositive = True; if s[0] == '+' or s[0] == '-': if s[0] == '-': isPositive = False s = s[1:] return int(s) if isPositive else -int(s) 양수/음수를 판단한 뒤, int형으로 변환 후 부호를 붙여주는 방식.. def solution(n): return int(n) 인데 내장 int 함수가 꽤 처리를 잘해줘서 위 코드만으로도 충분한 듯.
-
[Programmers] 수박수박수박수박수박수?programing/Algorithm 2021. 1. 10. 17:51
수박수박수박수박수박수? 연습 문제 level 1 python3 def solution(n): result = [] for i in range(n): if i % 2 == 0: result.append('수') else: result.append('박') return ''.join(result) 단순히 홀짝에 따라 추가해주고, string으로 만들면 끝. def solution(n): return "수박"*(n//2) + "수"*(n%2) 혹은 이렇게 2로 나눈 몫만큼 "수박"을 반복하고, 마지막에 "수"만 홀짝 여부에 따라 붙이는 방법도 있습니다.
-
[Programmers] 소수 찾기programing/Algorithm 2021. 1. 10. 16:30
소수 찾기 연습 문제 level 1 python3 import math; def prime_list(n): # 에라토스테네스의 체 초기화: n개 요소에 True 설정(소수로 간주) sieve = [True] * (n + 1) # n의 최대 약수가 sqrt(n) 이하이므로 i=sqrt(n)까지 검사 m = int(math.sqrt(n)) for i in range(2, m + 1): if sieve[i] == True: # i가 소수인 경우 for j in range(i+i, n+1, i): # i이후 i의 배수들을 False 판정 sieve[j] = False # 소수 목록 산출 return [i for i in range(2, n + 1) if sieve[i] == True] def solution(n..
-
[Programmers] 문자열 다루기 기본programing/Algorithm 2021. 1. 2. 17:28
문자열 다루기 기본 연습 문제 level 1 Python3 import re def solution(s): p = re.compile('^(\d{4}|\d{6})$') return p.search(s) is not None 정규표현식을 이용한 풀이입니다. 파이선 패턴 클래스의 메소드에는 결과값이 boolean인 메소드가 없어, 논리 연산을 해줘야 합니다. (물론 Match 객체는 True로 판단되기는 하지만..) def solution(s): return s.isdigit() and len(s) in (4, 6) 혹은 정규표현식 대신 위와 같이 풀 수도 있습니다. 그나저나 len(s) in (4, 6) 이라니, 파이썬은 보면 볼수록 자연어에 가까운 느낌이 드네요.
-
[Programmers] 문자열 내 p와 y의 개수programing/Algorithm 2021. 1. 2. 15:13
문자열 내 p와 y의 개수 연습 문제 level 1 python3 import re def solution(s): pattern_p = re.compile('[pP]{1}') result_p = pattern_p.findall(s) pattern_y = re.compile('[yY]{1}') result_y = pattern_y.findall(s) return len(result_p) == len(result_y) 정규표현식을 이용한 풀이. def solution(s): return s.lower().count('p') == s.lower().count('y') 혹은 그냥 lower case로 변경한 뒤, count 함수를 이용해 개수를 세어도 된다.
-
[Programmers] 문자열 내 마음대로 정렬하기programing/Algorithm 2021. 1. 1. 21:56
문자열 내 마음대로 정렬하기 연습 문제 level 1 python3 def solution(strings, n): strings.sort() answer=sorted(strings, key=lambda string: string[n]) return answer JS의 sort함수와 비슷하게, 파이썬도 비교 연산을 지정할 수 있다. 다만 람다 특유의 문법때문에, 파이썬에 미숙한 나로써는 100% 활용하기 어려운 듯.. 단순히 key만 주는 걸로는 "abcd"와 "abce" 처럼 인덱스의 문자가 같은 두 문자열을 제대로 비교할 수 없다. 그래서 sort()를 한번 실행해 줘야 한다. (순서는 상관 없다. 왜냐하면 파이썬의 sorted 함수는 안전하기 때문에..) def solution(strings, n):..