[프로그래머스 레벨1] 문제풀이 모음 python (2)

mauz·2022년 6월 18일
0

🐒 자연수 뒤집어 배열로 만들기

https://programmers.co.kr/learn/courses/30/lessons/12932

def solution(n):
    answer = []
    n = str(n)	# 정수 n을 문자열로 변환
    for i in n[::-1]: # 문자열 n을 뒤집어서 하나씩 읽기
        answer.append(int(i))	# 지금 보는 문자를 정수로 바꾸고 answer에 붙여주기
    return answer

🐒 정수 제곱근 판별

https://programmers.co.kr/learn/courses/30/lessons/12934

def solution(n):
	if int(n**(1/2)) == n**(1/2): # n의 제곱근이 정수라면
        return (int(n**(1/2)) + 1)**2	# (제곱근 + 1)의 제곱을 리턴
    else:	# n의 제곱근이 정수가 아니면
        return -1

🐒 짝수와 홀수

https://programmers.co.kr/learn/courses/30/lessons/12937

def solution(num):
    if num % 2 == 0:	# num이 2로 나누어 떨어지면 짝수
        return "Even"
    else:	# 나머지가 있으면 홀수
        return "Odd"

🐒 콜라츠 추측

https://programmers.co.kr/learn/courses/30/lessons/12943

def solution(num):
    count = 0	# 계산을 한 횟수를 저장하는 변수
    
    if num == 1:	# 최초의 num이 1로 주어졌다면 0를 리턴하라고 명시됌
        return 0
    
    while num != 1:	# num이 1이 아닐때까지만 반복
        if num % 2 == 0:	# num이 짝수라면
            num //= 2	# num을 2로 나눈다
        else:	# num이 홀수라면
            num = num * 3 + 1	
        count += 1	# 계산횟수 추가
        
        if count == 500:	# 계산횟수가 500번을 넘으면 종료
            return -1
    
    return count 

🐒 하샤드 수

https://programmers.co.kr/learn/courses/30/lessons/12947

def solution(x):
    digsum = 0	# 각 자릿수의 합을 저장할 변수
    for i in str(x):	# 정수 x를 문자열로 만들고 하나씩 읽어오기
        digsum += int(i) # 지금 보는 문자를 정수로 변환하여 더함
        
    if x % digsum == 0:	# x가 각 자릿수의 합으로 나누어 떨어지면 
        return True
    else:
        return False

🐒 x만큼 간격이 있는 n개의 숫자

https://programmers.co.kr/learn/courses/30/lessons/12954#

for문의 성질을 이용한 코드

def solution(x, n):
    if x == 0:	# x가 0 이라면
        return [0]*n	# 리스트에 0을 n개만큼 채움 [0,0,0,...]
    if x > 0:	# x가 양수라면
        return [i for i in range(x,x*n+1,x)]	# x부터 x * n 까지 x의 간격으로 i를 내보내서 리스트에 담음
    else:	# x가 음수라면
        return [i for i in range(x,x*n-1,x)]	# x부터 x * n 까지 x의 간격으로 i를 내보내서 리스트에 담음

range(시작, 끝, 간격)

while문의 성질을 이용한 코드

def solution(x, n):
    answer = []
    cnt = 0
    
    while len(answer) != n:
        cnt += 1
        answer.append(x * cnt)
    
    return answer

🐒 직사각형 별찍기

https://programmers.co.kr/learn/courses/30/lessons/12969

a, b = map(int, input().strip().split(' '))
# input() 함수로 입력을 받고
# .strip() 메소드로 문자열의 시작과 끝의 공백문자를 제거하고
# .split(' ') 메소드로 공백문자를 기준으로 문자열을 가른다.

# map() 함수로 갈라낸 문자열을 하나씩 받아 int함수를 돌려서 뱉어낸다.


for _ in range(b):	# b번 반복 해서
			#(변수가 필요없으면 변수자리에 _을 넣으면 됌)
    print('*'*a)	# a개의 별을 찍음

이번 문제는 함수에 넘어온 파라미터를 처리해서 리턴하는게 아니라
사용자로부터 입력을 받아서 처리 후 출력하는 문제이다.
확인해보면 입력은 "a b" 형태로 주어지고, a와 b사이에 공백으로 구분되어 있다.

profile
쥐구멍에 볕드는 날

0개의 댓글