본문 바로가기
PYTHON/PYTHON 문제풀이

파이썬 16-20.

by 쿙이콩 2025. 5. 29.
728x90
반응형

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

문제 함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성

제한사항 

x는 -10000000 이상, 10000000 이하인 정수

n은 1000 이하인 자연수

16-1. for문

def solution(x, n):
    answer = []
    for i in range(1, n+1):
        answer.append(x * i)
    return answer

★ 오답노트

x와 n의 상관관계를 수식화하지 못 함

i를 작아지는 n으로 사용해야 한다는 것을 인지하지 못 함

append를 하지 않아 빈 리스트 상태로 둠

def solution(x, n): x와 n을 입력받는 함수를 정의
answer = [] 결과를 저장할 빈 리스트를 만듦
for i in range(1, n+1): 1부터 n까지 반복(n번 반복)
아래에 x * 1부터 해야하니까 1부터 시작
answer.append(x * i) x에 i (1,2, .., n)을 곱한 값을 리스트에 추가
즉 x, 2x, 3x, ..., nx가 리스트에 차례로 들어감
return answer 완성 리스트 반환

16-2. 리스트 컴프리헨션

def solution(x, n):
	return[i * x + x for i in range(n)]
for i in range(n) i가 0부터 n-1까지 순서대로 변하는 반복문
i * x + x 각 i에 대해 i * x + x를 계산
(예) x = 2, n = 5: 
i = 0, 0*2+2=2
i = 1, 1*2+2=4
i = 2, 2*2+2=6
return [ ] 리스트에 넣음

 

728x90

 

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

 

문제 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴

제한조건 n은 10,000,000,000이하인 자연수

def solution(n):
    return [int(i) for i in str(n)[::-1]]

★ 오답노트

문자열 str(n)을 뒤집는 방법은 [::-1]

int(i) for i in str(n)[::-1]  for문 i는 str(n)에서 나오는 것임

17-1. for문, [::-1]

str(n) 숫자 n을 문자열로 변환
(예) n = 12345 -> '12345'
str(n)[::-1] 문자열 뒤집기
(예) '12345' -> '54321'
[int(i) for i in ...] 뒤집힌 문자열의 각 문자를 하나씩 꺼내 정수로 변환 + 리스트에 담음
(예) '54321' -> [5,4,3,2,1]

17-2. list(), map(), reversed()

def solution(n):
	return list(map(int, reversed(str(n))))
str(n) 숫자 n을 문자열로 변환
(예) n = 12345 -> '12345'
reversed(str(n)) reversed() 문자열 뒤집기
(예) '12345' -> '54321'
map(int, reversed(str(n))) map() 함수는 반복 가능한 객체의 각 요소에 지정한 함수를 적용
여기선 int함수를 사용, 뒤집힌 문자열의 각 문자를 정수로 변환
(예) '54321' -> (5,4,3,2,1)
list ( ) 리스트로 변환

 

18. 문자열을 정수로 바꾸기

 

문제 문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성

제한조건 

s의 길이는 1이상 5이하

s의 맨 앞에는 부호(+, -)가 올 수 있음

s는 부호와 숫자로만 이루어짐

s는 "0"으로 시작하지 않음

def solution(s):
    answer = int(s)
    return answer

 

19. 정수 제곱근 판별

 

문제 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성

제한사항 n은 1이상, 50000000000000 이하인 양의 정수

19-1. 식만 활용

def solution(n):
    x = int(n ** 0.5)
    if x * x == n:
        return (x + 1) ** 2
    else:
        return -1

★ 오답노트

x와 n의 관계, 제곱근을 식으로 표현한는 방법 x = int(n ** 0.5) = int(n **(1/2))

n와 x의 관계, n이 완전제곱근인 것을 if문으로 표현하는 방법 n == x * x 

19-2. float(부동소수점) 객체의 메서드인 .is_integer() 활용

def solution(n):
    sqrt = n ** 0.5
    if sqrt.is_integer():
        return int((sqrt + 1) ** 2)
    else:
        return -1

★ .is_integer( )는 함수가 아니라, float(부동소수점) 객체의 메서드. 즉, float 타입의 값에서만 사용할 수 있음

sqrt = n ** 0.5 n의 제곱근 구하기
if sqrt.is_integer( ) 제곱근이 정수인지 판별
return int((sqrt + 1) ** 2) 제곱근이 정수일 때 = n이 완전제곱수일 때
(x+1)의 제곱 반환
return -1 정수가 아닐 때

 

20. 정수 내림차순으로 배치하기

 

문제 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴

제한조건 n은 1이상 8000000000 이하인 자연수

20-1. .join , sorted( , reverse = True)

def solution(n):
    return int(''.join(sorted(str(n), reverse=True)))

★ 오답노트

sorted ( , reverse = True)  ->  sorted ( ) 임 -> 괄호 안에 reverse = True )를 써야 내림차순 적용

아니면 .sort (reverse = True) -> .sort ( ) 임 

' '. join 을 써야 정렬된 리스트를 하나의 문자열로 합쳐줌

str(n) 정수 n을 문자열로 변환
(예) n=118372 → '118372'
sorted(str(n), reverse = True) sorted( , reverse = True)로 해야 내림차순(큰 것부터) 정렬
(예)  '118372' → ['1', '1', '8', '3', '7', '2'] → ['8', '7', '3', '2', '1', '1']
' '.join 정렬된 리스트를 다시 하나의 문자열로 합치기
['8', '7', '3', '2', '1', '1'] → '873211'
int() 문자열을 정수로 변환

20-2. .join , .sort(reverse = True)

def solution(n):
    ls = list(str(n))
    ls.sort(reverse=True)
    return int(''.join(ls))

★ 오답노트

ls라는 변수 할당

sorted ( , reverse = True)  ->  sorted ( ) 임 -> 괄호 안에 reverse = True )를 써야 내림차순 적용

아니면 .sort (reverse = True) -> .sort ( ) 임 

' '. join 을 써야 정렬된 리스트를 하나의 문자열로 합쳐줌

728x90
반응형

'PYTHON > PYTHON 문제풀이' 카테고리의 다른 글

파이썬 26-30.  (2) 2025.06.02
파이썬 21-25.  (0) 2025.05.30
파이썬 11-15.  (0) 2025.05.28
파이썬 6-10.  (0) 2025.05.27
파이썬 1-5.  (0) 2025.05.26