def solution(n): lst = list(str(n)) lst.reverse() return list(map(int, lst)) 1. n을 문자열로 만들고, 각각 문자를 리스트로 만든다. 2. reverse 메서드를 이용해서 역으로 정렬해준다. 3. map으로 각각 요소값에 int를 적용시켜준 후, list로 형변환하여 반환한다. +) 더 줄인 풀이: reversed def solution(n): return list(map(int, reversed(str(n)))) 같은 방법은 맞는데, 한 줄로 처리한 코드이다. (좋아요 가장 많이 받은 풀이) 1. n을 문자열로 형변환하여 reversed의 입력값으로 넣는다. => 역순으로 정렬된 문자열 값들이 나옴 2. map으로 각각 요소에 int함수를 ..
알고리즘/programmers[1]
def divList(n): lst = [] for i in range(2, int(n**(0.5))+1): while n%i == 0: lst.append(i) n = n//i if n!=1: lst.append(n) return lst def solution(n, m): A = divList(n) B = divList(m) A.append(0) B.append(0) GCD = [] LCM = [] i, j = 0, 0 val1, val2 = 1, 1 while A[i]!=0 and B[j]!=0: if A[i]==B[j]: GCD.append(A[i]) LCM.append(A[i]) i += 1 j += 1 elif A[i]>B[j]: LCM.append(B[j]) j += 1 else: LCM.ap..
def solution(n): return sum([int(s) for s in str(n)]) 1. 숫자를 문자열로 바꾼다 2. 문자열의 각 문자를 int함수를 이용해서 숫자로 바꾼다. 3. 바꾼 애들을 저장한 리스트를 sum함수를 이용해서 다 더해준다. +) map함수를 이용한 풀이 def solution(n): return sum(map(int, str(n))) 위와 비슷한 풀이인데, 그냥 map을 사용한거다. +) 재귀함수를 이용한 풀이 def solution(n): if n
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번을 필수로 해줘야한다!!