[문제] 정수 배열 num_list와 정수 n이 매개변수로 주어집니다. num_list를 다음 설명과 같이 2차원 배열로 바꿔 return하도록 solution 함수를 완성해주세요. num_list가 [1, 2, 3, 4, 5, 6, 7, 8] 로 길이가 8이고 n이 2이므로 num_list를 2 * 4 배열로 다음과 같이 변경합니다. 2차원으로 바꿀 때에는 num_list의 원소들을 앞에서부터 n개씩 나눠 2차원 배열로 변경합니다. [답안] def solution(num_list, n): return [num_list[i:i + n] for i in range(0, len(num_list), n)] [풀이] 시작값 0, 마지막 값 len(num_list): num_list의 길이, 스텝 n 으로 for..
[문제] i팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 * 4 * 3 * 2 * 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요. [답안] from math import factorial def solution(n): answer = 0 while(n >= factorial(answer)): answer +=1 return answer - 1 [풀이] math 라이브러리의 factorial 함수를 사용하였다. 정수 n으로 구할 수 있는 가장 큰 팩토리얼 값을 구하기 위해서 0! 부터 while 문을 돌면서 n과 비교하였다. factorial(answer) 값이 n보다 작을 경우..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [문제] 문자열 before와 after가 매개변수로 주어질 때, before의 순서를 바꾸어 after를 만들 수 있으면 1을, 만들 수 없으면 0을 return 하도록 solution 함수를 완성해보세요. [답안] def solution(before, after): before = sorted(before) after = sorted(after) return 1 if before == after else 0 [풀이] 문자열 before과 after을 정렬하여 값이 같을 경우에 before 의 순서를 변경하..
def solution(letter): morse = { '.-':'a','-...':'b','-.-.':'c','-..':'d','.':'e','..-.':'f', '--.':'g','....':'h','..':'i','.---':'j','-.-':'k','.-..':'l', '--':'m','-.':'n','---':'o','.--.':'p','--.-':'q','.-.':'r', '...':'s','-':'t','..-':'u','...-':'v','.--':'w','-..-':'x', '-.--':'y','--..':'z' } return "".join([morse[v] for v in letter.split(' ')]) 모스부호를 문자로 변환하는 문제이다. 모스부호를 morse 라는 변수에 저장..
def solution(my_string): return "".join(list(dict.fromkeys(my_string))) 파이썬에서 중복된 문자를 제거할 수 있는 세가지의 방법이 있다. 1. set 중복이 없는 특징을 활용하여 "".join(set(my_string)) 처럼 사용할 수도 있었겠지만, set은 순서를 고려하지 않기 때문에 오답이 나올 수 있다. 2. for문 for문과 if문을 활용해서 중복을 제거할 수 있는 방법이다. 그렇지만 한줄로 쓸 수 있는 코드를 여러줄로 쓸 필요는 없으니까..! def solution(my_string): answer = [] for v in my_string: if v not in answer: answer.append(v) return "".join(a..
def solution(n): answer = 0 for i in range(1, n+1): cnt = 0 for j in range(1, i+1): if i % j == 0: cnt += 1 if cnt >= 3: answer += 1 return answer 합성수란? 약수의 개수가 3개 이상인 수 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 반환하는 문제이다. 1부터 n+1까지의 for문을 실행하고 for문 안에 cnt를 선언한다, cnt에는 약수인 수들의 카운트를 저장한다. 이중 for문을 정말 싫어하지만,, 이번엔 어쩔 수 없이.. for문을 하나 더 만들고 1부터 i+1까지의 반복문을 실행한다. i % j == 0 인 경우 j는 i의 약수가 된다. 약수일 경우 cnt의 카운트를 ..