Algorithm/Programmers 29

[프로그래머스]_Level 1_시저 암호_파이썬

2021.09.05 def solution(s, n): s = list(s) for i in range(len(s)): if s[i].isupper(): s[i]=chr((ord(s[i]) - ord('A') + n) % 26 + ord('A')) elif s[i].islower(): s[i]=chr((ord(s[i]) - ord('a') + n) % 26 + ord('a')) return "".join(s) 백준 11654번 문제에서 사용한 ord()와 chr()를 이용했다. ord() 문자의 유니코드 값을 돌려주는 함수. chr() 문자의 유니코드 값을 돌려주는 함수. 우선 받은 문자열을 리스트로 변환하고 s = "a B z" s = list(s) # ['a', ' ', 'B', ' ', 'z'] f..

[프로그래머스]_Level 1_약수의 합_파이썬

2021.09.04 def solution(n): return sum([i for i in range(1, n+1) if n % i == 0]) range()의 범위를 n/2로 줄이면 성능이 더 좋아짐. Ex) 20210904의 약수를 구해보면 아래와 같이 64개의 약수가 나옴 (8자리수 넘어가면 16램도 못버텨서..ㅎ) n = 20210904 n_list = [i for i in range(1, n+1) if n % i == 0] print(n_list) ''' [1, 2, 3, 4, 6, 7, 8, 9, 12, 14, 18, 21, 24, 27, 28, 36, 42, 54, 56, 63, 72, 84, 108, 126, 168, 189, 216, 252, 378, 504, 756, 1512, 1336..

[프로그래머스]_Level 1_이상한 문자 만들기_파이썬

2021.09.04 def solution(s): s = s.lower().split() answer = '' for i in s: for j, k in enumerate(i): if j % 2 == 0: k = k.upper() answer += k answer += ' ' return answer[:-1] 정확성 : 31.3 아마도 split(" ")을 넣지 않아서 정확성이 떨어지지 않았나 싶음... def solution(s): s = s.split() answer = [] for i in range(len(s)): word = '' for j in range(len(s[i])): if j % 2 == 0: word += s[i][j].upper() else: word += s[i][j].lower..

[프로그래머스]_Level 1_정수 제곱근 판별_파이썬

2021.09.04 def solution(n): sqrt_n = pow(n, 0.5) return pow(int(sqrt_n)+1, 2) if sqrt_n == int(sqrt_n) else -1 pow() pow(x, y)는 x의 y 제곱한 결괏값을 돌려주는 함수이다. # 1 def solution(n): sqrt_n = pow(n, 0.5) if sqrt_n == int(sqrt_n): return pow(int(sqrt_n)+1, 2) else: return -1 # 2 def solution(n): sqrt_n = n ** 0.5 if sqrt_n == int(sqrt_n): return int(sqrt_n) ** 2 else: return -1