알고리즘

def solution(s, n): answer = '' for i in s: if (i.isalpha()): num = ord(i) # 문자 -> 숫자 변환 if num>=97: num = (num-97+n)%26 + 97 else: num = (num-65+n)%26 + 65 i = chr(num) # 숫자 -> 문자 변환 answer += i return answer 1. 한 글자씩 뽑아 알파벳인지 확인, 알파벳이라면 아스키코드값으로 변환 후 소문자인지(num>=97)확인 2. 소문자라면 97을 빼준 후 n을 더하여 나머지 연산지를 취함.(순환 배열을 구현하기 위한 나머지연산자. 알파벳 개수 26개) 그리고 97을 더해 원래 값을 얻음 3. 대문자라면 2번에서 97대신 65를 빼주고 더해줌 4. i..
def solution(arr): arr.remove(min(arr)) return arr or [-1] 1. 리스트에서 가장 작은 수를 remove해줌 2. arr이 빈 리스트라면 [-1]을 반환
def isPrime(num): for i in range(2, int(num**(0.5))+1): if num%i == 0: return False return True def solution(n): answer = 0 for i in range(2, n+1): if i>5: if i%2 == 0 or i%3 == 0 or i%5 == 0: continue if (isPrime(i)): answer += 1 return answer # isPrime함수 num을 2~sqrt(num)로 나눔 => 나누어떨어지면 1과 자기자신 외에 약수가 있다는 뜻(소수가 아님) => False반환 => 어떤 수로도 나누어 떨어지지 않으면 1과 자기자신만 약수(소수) => True반환 # solution 2부터 n까지의 ..
def solution(s): s = sorted(list(s)) s.reverse() return ''.join(s) 정렬 후 reverse => 문자열로 반환 +) 조금 개선한 풀이 def solution(s): s = sorted(s, reverse=True) return ''.join(s) - sorted에는 list값이 아닌 문자열도 넣을 수 있음 - sorted에는 reverse=True로 역으로 정렬할 수 있는 기능이 있음
def solution(s): k=0 for i in s: if i in ['p','P']: k+=1 elif i in ['y','Y']: k-=1 return k==0 p면 +1 y면 -1해서 0인지 확인 def solution(s): l = s.lower() return l.count('p') == l.count('y') 간결한 풀이 from collections import Counter def solution(s): dic = Counter(s.lower()) return dic['p'] == dic['y'] Counter와 해시를 이용한 풀이
def solution(strings, n): strings.sort() return sorted(strings, key=lambda x:x[n]) 1. strings를 한 번 sort()해준다. 2. sorted의 key를 x[n]으로 설정해서 정렬 기준을 n번째 문자열로 바꿔준다. 정렬 기준이 동일하다면 사전순으로 정렬하여 값을 반환해야 하기 때문에 1번을 필수로 해줘야한다!!
def solution(a, b): return (abs(a-b)+1)*(a+b)//2 등차수열의 합 공식을 사용함. n: a~b 숫자 개수 => abs(a-b)+1 a: a l : b +) def solution(a, b): if a
def solution(arr, divisor): a = [i for i in arr if i%divisor == 0] # a가 빈 리스트가 아니면 sorted(a)반환/ else [-1] return sorted(a) if a else [-1] 1. arr배열 요소 중 divisor로 나누어 떨어지는 값만 a배열에 저장함 2. a배열이 빈 리스트가 아니라면 sorted(a) (=오름차순으로 정렬된 a배열) 을 반환 빈 리스트라면 [-1]을 반환한다. +) or을 이용한 풀이 def solution(arr, divisor): # or: 앞에 것이 거짓이라면 뒤에 것 반환 return sorted([n for n in arr if n%divisor == 0]) or [-1] 프로그래머스에서 좋아요를 가장 ..
# 1. a[-1:] def solution(arr): a = [] for i in arr: if a[-1:] != [i]: a.append(i) return a a[-1:]은 a[-1]과 같은 효과이면서, 오류는 나지 않는 방법!! (a가 []라도 오류가 나지 않는다) 대신 리스트에 들어간 상태로 반환되기 때문에([1], [2] 이런 꼴) i를 [i]로 써야한다. #2. a[i-1:i] def no_continuous(s): return [ v for i,v in enumerate(s) if s[i-1:i]!=s[i] ] a[i-1:i]는 a[i-1]과 같은 효과이면서, 오류는 나지 않는 방법이다! a[i-1:i]는 리스트에 들어간 상태로 반환되지 않는다.(왜인지는 모름..) 그래서 s[i]로 그냥 써..
def solution(arr): answer = [] arr.insert(0, -1) for i in range(1, len(arr)): if arr[i-1] != arr[i]: answer.append(arr[i]) return answer 1. arr 맨 첫 번째에 -1을 넣어줌(arr의 원소들은 항상 자연수이므로 겹칠 일이 없음) 2. 1~(len-1)인덱스까지 반복, 이전 인덱스의 숫자와 현재 인덱스의 숫자 비교 => 다르다면 answer에 추가해줌 ex) [1,2,3,3] => [-1,1,2,3,3] // -1추가 : -1, 1은 다름 => answer = [1] : 1, 2는 다름 => answer = [1,2] : 2, 3은 다름 => answer = [1,2,3] : 3, 3은 같음 =>..
fladi
'알고리즘' 카테고리의 글 목록 (11 Page)