★ 중요: 파이썬에서 순서 거꾸로 하는 방법
참고
' '. 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( )
'오답노트 > 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 |