짝수와 홀수.py
문제 설명
정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요.
제한 조건
- num은 int 범위의 정수입니다.
- 0은 짝수입니다.
문제풀이
def solution(num):
return "Even" if num % 2 == 0 else "Odd"
함수 반환 값에 if문을 넣어 작성했다.
최대공약수와 최소공배수. py
문제 설명
두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.
제한 사항
- 두 수는 1 이상 1000000 이하의 자연수입니다.
문제풀이
def gcd(x, y):
while y:
x, y = y, x%y
return x
def lcm(x, y):
return x * y // gcd(x, y)
def solution(x, y):
return [gcd(x,y), lcm(x,y)]
유클리드 호제법(x, y의 최대 공약수는 x를 y로 나눈 나머지와 y의 최대공약수와 같다)을 검색해서 풀었다. 최대공약수와 최소공배수를 구하는 함수를 각각 만들고, solution 함수에서 결괏값을 반환했다.
* 호제법이란 말은 두 수가 서로(互) 상대방 수를 나누어(除)서 결국 원하는 수를 얻는 알고리즘을 나타낸다.
콜라츠 추측.py
문제 설명
1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다.
1-1. 입력된 수가 짝수라면 2로 나눕니다.
1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다.
2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다.
단, 작업을 500번을 반복해도 1이 되지 않는다면 –1을 반환해 주세요.
제한 사항
- 입력된 수, num은 1 이상 8000000 미만인 정수입니다.
문제풀이
def solution(num):
n = 0
while num != 1:
n += 1
if num % 2 == 0:
num = num / 2
else:
num = num * 3 + 1
if n > 500:
return -1
return n
우선 입력값을 num으로 받았다. while문을 사용해 num이 1이 될 때까지 반복하도록 했고, if문을 사용해 짝수인 경우와 홀수인 경우로 나눠 계산했다.
반복 횟수를 구하기 위해 n을 사용했다. while문에서 반복할 때마다 n을 1씩 증가시키고, 500번을 초과하면 -1을 반환하도록 했다.
하샤드 수.py
문제 설명
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
제한 조건
- x는 1 이상, 10000 이하인 정수입니다.
문제풀이
def solution(x):
x_list = list(map(int, str(x)))
sum = 0
for i in range(len(x_list)):
sum += x_list[i]
return x % sum == 0
x를 문자열 형태로 바꾼 후 숫자 리스트 x_list로 변환시켰다. 그리고 리스트의 길이만큼 반복하는 for문을 만들어 각 리스트 요소를 sum에 더했다. 결괏값 출력에는 비교 연산자를 사용했다.
* map 에는 반복 가능한 객체(문자열, 리스트, 딕셔너리, 세트)를 넣을 수 있다.
'Problem Solving > Programmers' 카테고리의 다른 글
[프로그래머스] Level 1 키패드 누르기 | 파이썬 (0) | 2021.07.29 |
---|---|
[프로그래머스] Level 2 시저 암호 | 파이썬 (0) | 2021.07.16 |
[프로그래머스] Level 2 JadenCase 문자열 만들기 (0) | 2021.07.11 |
[프로그래머스] Level 1 자릿수 더하기/이상한 문자 만들기/약수의 합 (0) | 2021.07.06 |
[프로그래머스] Level 1 제일 작은 수 제거하기/정수 제곱근 판별/정수 내림차순으로 배치하기/자연수 뒤집어 배열로 만들기 (0) | 2021.07.05 |