본문 바로가기
오답노트/PYTHON_1차

[LV 1.] 문제 11~20.

by 쿙이콩 2025. 6. 3.
728x90
반응형

★ 중요: 파이썬에서 순서 거꾸로 하는 방법

참고

' '. join은 리스트(또는 튜플 등 반복 가능한 객체)의 문자열 요소들을 하나의 문자열로 합칠 때 사용하는 함수.

여기서 '구분자' 는 각 요소 사이에 들어갈 구분자(seperator)를 의미

구분 사용대상 원본변경 반환값/결과 특징/예시
슬라이싱 [::-1] 시퀀스 자료형 모두 X 같은 자료형의
복사본
시퀀스 자료형 전체에 사용 가능.
새로운 역순 객체 생성.

예: a[::-1]
리스트: [1][2][3][::-1] → [3][2][1]
문자열: "abc"[::-1] → "cba"
reversed() 함수 시퀀스 자료형 모두 X iterator 원본 변경 X, 역순 이터레이터 반환. 자료형 변환 필요.
( 리스트 변환 list() / 문자열 변환 ' '.join()으로)

예: list(reversed(a)),
' '.join(reversed(s)) 

list(reversed([1][2][3])) → [3][2][1]
reverse() 메서드 ONLY
리스트
O NONE 리스트 원본 자체를 뒤집음. 반환값 없음.
예: a.reverse()
실행 후 a가 역순으로 바뀜
a = [1][2][3]; a.reverse(); print(a) # [3][2][1]
sorted(변수,reverse=True) 모든
이터러블

(정렬용)
X True(내림차순)
정렬된 리스트
정렬(내림차순 포함), 원본 변경 X. 역순 정렬.
예: sorted([3,1,][2], reverse=True) → [3][2][1]
문자열: ''.join(sorted("cba", reverse=True)  → "cba"
.sort(reverse=True) ONLY
리스트
  True(내림차순)
정렬된 리스트
 
a = [1, 2, 3]
print(a[::-1])                # [3, 2, 1]

a.reverse()
print(a)                      # [3, 2, 1]

b = [1, 2, 3]
print(list(reversed(b)))      # [3, 2, 1]

c = [3, 1, 2]
print(sorted(c, reverse=True))# [3, 2, 1]

s = "hello"
print(s[::-1])                # "olleh"
print(''.join(reversed(s)))   # "olleh"
print(''.join(sorted(s, reverse=True))) # "olleh"

 

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

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

제한 

n은 10,000,000,000이하인 자연수

 

풀이1. .append() , .reverse() 사용

def solution(n):
    answer = []
    for i in str(n):
        answer.append(int(i))
    answer.reverse()
    return answer

1) answer.append(int(i)) int(i) 별도 변수 할당 없이 바로 .append()에 입력 가능

2) 순서 바꾸기 위해서 .reverse()만 하면 됨. 대신 들여쓰기 주의

 

풀이2. 리스트 컴프리헨션, [::-1] 사용

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

1) for i in str(n)[::-1] 

2) return 전체를 [ ] 리스트로 묶기

 

19. 정수 제곱근 판별

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

제한 

n은 1이상, 50000000000000 이하인 양의 정수

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

1) n은 주어진 값이지만 x는 아니므로, x가 무엇인지 정의해주고(x=변수할당) 시작해야함

2) x = int ( n ** 0.5 ) 여기서 정수인 것을 누락하면 안 됨! 안 그러면 float생겨서 에러 뜸! 따라서 int 중요!

3) for문 사용법: 리스트나 범위 등을 순회할 때 사용. 여기서는 순회할 것 없이 그냥 값 비교

 

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

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

제한

n은 1이상 8000000000 이하인 자연수

def solution(n):
    return int(''.join(sorted(str(n), reverse=True)))
    
def solution(n):
    ls = list(str(n))
    ls.sort(reverse=True)
    return int(''.join(ls))
sorted(변수, reverse = True) 모든 반복 가능 객체에 사용 가능
리스트.sort(reverse = True) 리스트만 가능
 ' ' . join(리스트명, 튜플명 등) '구분자' 기준으로 리스트/튜플의 문자열을 모아라
여기서는 '' (구분자에 아무것도 안 넣음) 므로 모든 문자열 합치라는 뜻

1) str(n) → 내림차순 sorted( 변수, reverse=True )  → 하나로 연결 ' '.join( )     정수화 int( )

2) str(n)을 리스트로 → 내림차순 리스트.sort(reverse = True)  → 하나로 연결 ' '.join( )     정수화 int( )

728x90
반응형

'오답노트 > PYTHON_1차' 카테고리의 다른 글

[LV 2.] 문제 31~40.  (2) 2025.06.23
[LV 1.] 문제 21~30.  (0) 2025.06.03
[LV 1.] 문제 1~10.  (0) 2025.06.01