파이썬 배열 역순 정렬, 기수 변환하기
2022. 2. 5. 20:52ㆍ컴퓨터 사이언스/Algorithm
반응형
배열을 사용하는 기본 알고리즘들
배열 역순으로 정렬하기
from typing import Any, MutableSequence
# a의 원소를 역순으로 정렬
def reverse_array(a: MutableSequence) -> None:
n = len(a)
for i in range(n//2):
a[i], a[n-i-1] = a[n-i-1], a[i]
if __name__ == '__main__':
print('배열 원소를 역순으로 정렬합니다.')
nx = int(input('원수의 수를 입력하세요! : '))
x = [None] * nx
for i in range(nx):
x[i] = int(input(f'x[{i}]값을 입력해주세요. : '))
reverse_array(x)
print('역순의 결과입니다!')
for i in range(nx):
print(f'x[{i}] = {x[i]}')
Devide & Conquer
def reverse_array(a: MutableSequence) -> None:
파이썬에는 변경가능한 객체(mutable) 과 변경불가능한 객체(immutable) 이 있습니다.
변경가능한 객체에는 리스트(list)와 딕셔너리(dict) 이 있습니다.
변경불가능한 객체에는 일반적인 자료형 int, string 등 과 튜플(tuple) 등이 있습니다.
n = len(a)
for i in range(n//2):
a[i], a[n-i-1] = a[n-i-1], a[i]
배열의 첫번째 원소와 마지막 원소, 두번째 원소와 마지막에서 두번째 원소의 위치들을 서로 바꾸어줌으로서 역순으로 정렬한다.
또한 원소의 갯수가 홀수이라면 가운데 원소는 바꿔줄 필요가 없기에, n//2 만큼 반복문을 실행한다.
기수 변환하기(n진수 구하기)
from typing import Any, MutableSequence
# 10진수 정숫값을 입력받아서 2~36 진수로 변환하여 출력하기
def card_conv(x: int, r: int) -> str:
# 정숫값 x를 r진수로 변환한 뒤 그 수를 나타내는 문자열을 반환
d = '' # 변환 후의 문자열
dchar = '0123456789ABCDEFGHIJKLNMOPQRSTUVWXYZ'
while x > 0:
d += dchar[x % r] # 해당하는 문자를 꺼내 추가
x = x // r
return d[::-1] # 역순으로 반환
if __name__ == '__main__':
print('10진수를 n진수로 변환합니다.')
while True:
while True:
no = int(input('변환할 값으로 음이 아닌 정수를 입력하세요 : '))
if no > 0:
break
while True:
cd = int(input('어떤 진수로 변환할까요?: '))
if 2 <= cd <= 36:
break
print(f'{no}을 {cd}진수로 변환한 값은 {card_conv(no, cd)}입니다!')
retry = input('exit 을 입력하시면 프로그램이 종료됩니다.')
if retry == 'exit':
break
Devide & Conquer
while x > 0:
d += dchar[x % r] # 해당하는 문자를 꺼내 추가
x = x // r
진수로 변환할 때는 해당 진수로 나누어주기 때문에 위와 같은 코드 사용
return d[::-1] # 역순으로 반환
변환 후 아래에서부터 세기 때문에 위와 같은 코드 사용
while True:
cd = int(input('어떤 진수로 변환할까요?: '))
if 2 <= cd <= 36:
break
2진수부터 36진수까지만 유효하기에 위와 같은 코드 사용
반응형
'컴퓨터 사이언스 > Algorithm' 카테고리의 다른 글
파이썬 배열 선형 검색 (0) | 2022.02.08 |
---|---|
파이썬 소수 나열하기 (0) | 2022.02.07 |
파이썬 배열 원소의 최댓값 구하기 (0) | 2022.02.04 |
동백 // 백준 파이썬 2750번: 수 정렬하기 (0) | 2022.01.10 |
동백 // 백준 파이썬 2750번: 수 정렬하기 (0) | 2022.01.10 |