프로그래머스
-
[프로그래머스 Python] 정수 제곱근 판별Algorithm/1일 1코테 2020. 9. 23. 14:07
문제 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. 입출력 예시 알고리즘 1. n의 제곱근을 구한다 2. n의 제곱근이 정수면 return값으로 n의 제곱근 +1의 제곱을 구한다. 3. 정수가 아니면 -1 출력 처음엔 제곱근을 구하는 함수를 사용했을 때 정수가 아니면 error가 나는 줄 알고 try~except문을 사용했는데 그게 아님을 발견! 그러면 정수인지 아닌지 판별을 어떻게 해야할 지 고민하다가 제곱근 값이 int(제곱근)이랑 같으면 정수! 내 답 import math def solution(n): if math.sqrt..
-
[프로그래머스 Python] 정수 내림차순으로 배치하기Algorithm/1일 1코테 2020. 9. 23. 13:46
문제 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 내가 쓴 답 def solution(n): return int(''.join(sorted(str(n), reverse=True))) 알고리즘 1. n을 string으로 바꾼 뒤, reverse로 sorted (리스트로 반환됨) 2. ''.join을 통해 문자열로 바꿈 3. int를 통해 정수로 바꿔줌 다른사람 풀이 def solution(n): ls = list(str(n)) ls.sort(reverse = True) return int("".join(ls)) 똑같은 알고리즘인듯
-
[프로그래머스 Python] 자연수 뒤집어 배열로 만들기Algorithm/1일 1코테 2020. 9. 23. 13:37
문제 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. 입출력 예시 내 답 def solution(n): n = str(n) answer = [] for i in range(1, len(n)+1): a = int(n[-i]) answer.append(a) return answer 알고리즘 n에서 거꾸로 뽑은 값 answer에 하나씩 append. 그런데 생각해보니까 파이썬 알고리즘 인터뷰에서 [::-1]이 있었다!! 내 답 2 def solution(n): n = str(n) answer = [] for i in n: answer.append(int(i)) answer = answer[::-1] return ans..
-
[프로그래머스 Python] 자릿수 더하기Algorithm/1일 1코테 2020. 9. 23. 13:03
문제 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 입출력 예시 내 답1 def solution(n): sum = 0 n = str(n) for i in range(len(n)): sum += int(n[i]) return sum 알고리즘 n을 str로 바꿔주고 하나씩 출력하여 sum에 더해줌 문득 리스트로 바꾸면 sum()을 이용해 한번에 처리할 수 있겠단 생각이 들음! 내 답2 def solution(n): return sum([int(i) for i in str(n)]) 성공^~^
-
[프로그래머스 Python] 이상한 문자 만들기Algorithm/1일 1코테 2020. 9. 23. 12:51
문제 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요. 입출력 예시 내 답 def solution(s): answer = '' a = s.split() for word in a: for j in range(len(word)): if j%2 == 0: answer += word[j].upper() else: answer += word[j].lower() answer += ' ' return answer[:-1] 알고리즘 1. 공백을 기준으로 answer을 나눠준다. (try, hello, world)로 나뉨 2. 짝수면 대문..
-
[프로그래머스 Python] 약수의 합Algorithm/1일 1코테 2020. 9. 23. 11:35
문제 정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 내 답 def solution(n): answer = 0 for i in range(1,n+1): if n%i == 0: answer += i return answer 알고리즘 1. n을 i(1부터 n까지)로 나누어서 나머지가 0인수는(=약수) answer에 더 한다 2. answer 출력 다른사람 풀이 def sumDivisor(num): # num / 2 의 수들만 검사하면 성능 약 2배 향상잼 return num + sum([i for i in range(1, (num // 2) + 1) if num % i == 0]) num//2로 범위지정(모든 약수는 반만 계산하면 되기 때문에) list com..
-
[코테] 완주하지 못한 선수 - sort, zip, collectionsAlgorithm/1일 1코테 2020. 3. 10. 22:53
sort 순서대로 정렬해주는 함수 = list.sort() zip 여러개의 리스트를 짝지어주는 함수 = for x,y in zip(a,b) 리스트 [-1]은 맨 뒤에서부터 출력한다. def solution(participant, completion): participant.sort() completion.sort() for x,y in zip(participant, completion): if x != y: return x retrun participant[-1] import collections def solution(participant, completion): answer = collections.Counter(participant) - collections.Counter(completion) re..