Algorithm
[프로그래머스] 약수의 합
문제 문제 설명 정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 입력 & 출력 입출력 예 nreturn 12 28 5 6 풀이 과정 1. 주어진 숫자를 for문을 이용하여 1부터 자기 자신까지 하나씩 순회합니다. 2. 나머지가 0인 숫자를 판별하면서 이것을 바로 조건문에 사용하여 True, False로 사용합니다. 나머지가 0이 된다면 조건문을 충족하는 것이 되며 이때의 i값을 answer에 더해주고 이를 리턴합니다. 코드 def solution(n): answer = 0 for i in range(1, n+1): if not(n%i): answer += i return answer
[프로그래머스] 이상한 문자 만들기
문제 이상한 문자 만들기 문제 설명 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백 문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요. 입력 & 출력 입출력 예 sreturn "try hello world" "TrY HeLlO WoRlD" 풀이 과정 1. 문자열을 띄어쓰기를 기준으로 나눠서 작업해야한다는 내용과 중간에 띄어쓰기의 개수가 바뀔 수도 있다는 내용에서 split()을 사용해야 된다고 생각을 하였다 여기서. split() 기본으로 사용해도 띄어쓰기 기준으로 나눌 수 있지만 띄어쓰기가 여러 번 들어올 수도 있다는 제약 조건이 있기 때문에. split(" ")으로 ..
[프로그래머스] 최대공약수와 최소공배수
문제 문제 설명 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다. 제한 사항 두 수는 1이상 1000000이하의 자연수입니다. 입력 & 출력 입출력 예 nmreturn 3 12 [3, 12] 2 5 [1, 10] 풀이 과정 1. 최대 공약수와 최소공배수를 구하는 함수를 만들어줍니다. 여기서 최대 공약수를 구하는 방식은 for문을 이용하지만 큰 숫자부터 밑으로 내려오면서 정말 탐색하다가 나누어 떨어지는 숫자에서 리턴하는 방식으로 구성합니다. 2. 최소..
[프로그래머스] 소수 찾기
문제 문제 설명 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 입력 & 출력 입출력 예 nresult 10 4 5 3 풀이 과정 1. 소수를 판별하는 함수를 만들어서 해결하려고 하였습니다. 소수 판별하는 함수는 총 3가지 정도로 많이 구성하지만 여기서는 에라토스테네스의 체의 개념을 사용한 어떤 숫자의 제곱근까지의 숫자까지만 판별하는 방식으로 시간 복잡도를 줄였습니다. 2. 1번 방식으로 소수를 구하는 함수를 구성한다면 그 결과값은 소수인지 아닌지 Boolean형태로 반환되게 됩니다. 이것을 조건문에 사용해서 소수일 경우에는 answer 변수를 1씩 증가시키고 이를 반..
[프로그래머스] 문자열 내림차순으로 배치하기
문제 문제 설명 문자열 s에 나타나는 문자를 큰 것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요. s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다. 입력 & 출력 입출력 예 sreturn "Zbcdefg" "gfedcbZ" 풀이 과정 1. sorted함수와 join 함수 사용방법만 알면 해결되는 문제입니다. 문자열을 배열로 변환하여서 sorted함수를 이용하여 오름차순으로 변경하고 이것을 join을 이용하여 문자열로 변환하여 리턴합니다. 코드 def solution(s): answer = "".join(sorted(list(s), reverse = True)) return answer
[프로그래머스] 문자열 내 p와 y의 개수
문제 문제 설명 대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다. 예를 들어 s가 "pPoooyY"면 true를 return 하고 "Pyy"라면 false를 return 합니다. 제한사항 문자열 s의 길이 : 50 이하의 자연수 문자열 s는 알파벳으로만 이루어져 있습니다. 입력 & 출력 입출력 예 sanswer "pPoooyY" true "Pyy" false 풀이 과정 1. 대소문자 구분 없이 체크하면 되므로 대소문자 두 개로 다 count를 하..