알고리즘 풀이/프로그래머스 109

[Level1] 최대공약수와 최소공배수

문제 입력된 두 정수에 대한 최대공약수와 최소공배수를 출력한다. 입력 [3, 12] 출력 [3, 12] 최소공배수와 최대공약수의 의미대로 구현하였다. python def solution(n, m): answer = [] min_num=min(n,m) gcd=0 for i in range(1,min_num+1): if n%i==0 and m%i==0: if gcdi: lcm=i answer.append(gcd) answer.append(lcm) return answer 다른사람 풀이 def solution(a, b): answer = [] c, d = max(a, b), min(a, b) t = 1 while t > 0: t = c % d c, d = d, t answer = [c, int(a*b/c)] ..

[Level1] 제일 작은 수 제거하기

문제 배열 arr에서 제일 작은 수를 제거하고 출력한다. 제거한 뒤 빈 배열이면 -1을 넣어서 출력한다. 입력 [4, 3, 2, 1] [10] 출력 [4, 3, 2] [-1] 1. arr에서 제일 작은 수를 찾는다. 2. 입력된 배열 arr을 탐색하여 제일 작은 수를 제외하고 answer에 넣는다. 3. for문 이후에 answer가 비어있다면 -1을 넣는다. python def solution(arr): answer = [] min_num=min(arr) for num in arr: if min_num==num: continue else: answer.append(num) if answer==[]: answer.append(-1) return answer

[Level1] 정수 제곱근 판별

문제 양의 정수 n이 어떤 정수 x의 제곱근인지 아닌지 판별하라. x의 제곱근이라면 (x+1)의 제곱을 출력 아니라면 -1을 출력한다. 입력 121 3 출력 144 -1 1. 변수 num에 n의 제곱근을 int형으로 변환하여 저장한다. 2. if문을 통해 다시 num의 제곱이 n이 맞는지 판단한다 3. 같지않다면 answer에 -1을 같다면 (num+1)에 제곱을 answer에 저장한다. python def solution(n): answer = 0 num=int(n**0.5) if n!=num**2: answer=-1 else: answer=(num+1)**2 return answer

[Level1] 정수 내림차순으로 배치하기

문제 정수 n이 입력되었을 때 정수를 내림차순으로 정렬하여 출력해보자 입력 118372 출력 873211 1. 입력된 정수 n을 문자형으로 변환한다. 2. 문자열로 변환된 정수를 sorted()한다. => list형태가 된다. 3. while문으로 list가 empty일 때까지 끝의 숫자를 문자열인 num에 추가한다. 4. num을 int형으로 변환하고 answer에 대입한다. python def solution(n): answer = 0 num_to_str=str(n) num_to_str=sorted(num_to_str) num="" while num_to_str!=[]: num+=num_to_str[-1] num_to_str.pop() answer=int(num) return answer 다른 사람의..

[Level1] K번째수

문제 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구한다. 입력 array commands [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] 출력 [5,6,3] 1. commands에서 i, j, k를 꺼낸다. 2. slicing을 활용하여 number에 i-1:j 까지 대입한다. 3. number를 오름차순 정렬하고 4. number의 k-1번째 수를 answer에 추가한다. python def solution(array, commands): answer = [] for idx in range(len(commands)): i=commands[idx][0] j=commands[idx][1] k=commands..

[Level1] 모의고사

문제 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 문제의 정답이 입력되었을 때 가장 많이 맞힌 수포자의 번호를 출력한다. 동점자가 있으면 오름차순으로 정렬하고 문제의 수는 최대 10000개이다. 입력 [1,2,3,4,5] 출력 [1] 1. 수포자들이..

[Level1] 완주하지 못한 선수

문제 마라톤에 참가한 선수 중 한 사람만 통과하지 못했다. 마라톤에 참가한 선수의 이름이 들어가있는 리스트와 완주한 선수들의 이름이 들어있는 리스트가 입력이 되었을 때 완주하지 못한 선수의 이름을 출력해보자. 마라톤에 참가한 선수 중 동명이인이 있을 수 있다. 입력 ["leo", "kiki", "eden"] ["eden", "kiki"] 출력 "leo" 1. 두 개의 리스트를 비교할 때 정렬을 한 뒤 비교를 해보자. 2. 입력된 두 개의 리스트를 오름차순으로 정렬한다. 3. completion을 기준으로 for문을 돌려 같은위치에 있는 이름을 비교한다. 4. 만약 같은 위치에 다른이름이 있다면 participant의 이름을 출력한다. 5. 위의 for문에서 return되지 않았다면 participant의..

[Level1] 같은 숫자는 싫어

문제 여러 개의 정수로 이루어진 리스트가 입력된다. 이 리스트의 수는 0이상 9이하로 존재한다. 이때 연속으로 존재하는 숫자는 한 개만 남기고 모두 제거하도록 한다. 입력 [1,1,3,3,0,1,1] 출력 [1,3,0,1] 1. 현재 인덱스와 다음 인덱스의 수가 같으면 continue를 하고 다르면 answer에 수를 추가한다. 2. 인덱스가 증가하다가 마지막 인덱스에 도달 했을 때 마지막 숫자를 answer에 추가한다. 3. answer에는 문제에서 요구하는 숫자만 남게된다. python def solution(arr): answer = [] for idx in range(len(arr)): if idx==len(arr)-1: answer.append(arr[idx]) continue if arr[id..

[Level1] 나누어 떨어지는 숫자배열

문제 정수로 이루어진 리스트와 정수가 입력되었을 때 리스트 중 입력된 정수로 나누어 떨어지는 수를 오름차순으로 정렬하여 출력한다. 만약 나누어 떨어지는 수가 없다면 -1을 포함시켜 출력한다. 입력 [5, 9, 7, 10] 5 [3, 2, 6] 10 출력 [5, 10] [-1] 1. 리스트를 탐색하여 divisor와 나누어 떨어지는 수를 answer에 추가한다. 2. 리스트 탐색이 종료되었을 때 answer가 빈 리스트면 -1을 추가한다. 3. 마지막으로 answer을 정렬하여 반환한다. python def solution(arr, divisor): answer = [] for number in arr: if not number%divisor: answer.append(number) if answer==[..

[Level1] 자릿수 더하기

문제 자연수 N이 주어지면 N의 각 자릿수를 더한 합을 출력한다. 입력 123 출력 6 어떤 수의 일의 자리를 구할 때는 %10을 하며 1000->100->10을 할 때는 10으로 나눴을 때 몫을 취한다. 위의 연산을 반복적으로 하여 자연수 N이 0이하면 종료하도록 한다. python def solution(n): answer = 0 while n>0: answer+=(n%10) n//=10 return answer c++ #include using namespace std; int solution(int n) { int answer = 0; while(n>0){ answer+=(n%10); n/=10; } return answer; }

728x90
반응형