배열 원소를 역순으로 정렬하기
교환 횟수는 원소 수 // 2
def arr(a):
n = len(a)
for i in range(0, n // 2):
a[i], a[-i-1] = a[-i-1], a[i]
return a
a = [3, 5, 4, 2, 6]
print(arr(a))
예제 코드
from typing import Any, MutableSequence
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('정렬했습니다.')
print(x)
리스트를 역순으로 정렬하기
x.reverse() 함수를 이용한다.
역순으로 정렬한 리스트 생성
y = list(reversed(x))
reversed(x)는 이터러블 객체를 생성한다. 이터레이터(반복자)를 반환하는 것.
기수 변환하기(n진수 구하기)
#n진수 구하기
def binary_n(a, n):
number = []
while True:
if a == 0:
break
number.append(a % n)
a = a // n
for i in range(1,len(number)+1):
print(number[-i], end='')
binary_n(10, 2)
print()
기수 - 10진법에서는 0~9까지의 정수 / 서수 - 순서가 있는 수
십진수 decimal : 0123456789
자릿수별로 10의 거듭제곱값을 차지한다.
8진수 octal : 01234567
1자릿수 : 0~7 / 2자릿수 : 10 ~ 77 / 3자릿수 : 100 ~ 777
자릿수별로 8의 거듭제곱값을 차지한다.
16진수 hexadecimal : 0123456789abcdef
예제 코드 - 으음.. 어렵다..
def card_conv(x:int, r:int) -> str:
d = ''
dchar = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
while x>0:
d += dchar[x%r]
x //= r
return d[::-1]
def card_conv(x:int, r:int) -> str:
d = ''
dchar = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
while x>0:
d += dchar[x%r]
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'{cd}진수로는 {card_conv(no, cd)}입니다.')
retry = input("한 번 더 변환할까요? (Y ... 예 / N ... 아니요): ")
if retry in {'N', 'n'}:
break
예제 코드 - 변환 과정을 자세히 나타내기
'Computer Science > 자료구조' 카테고리의 다른 글
[4.24] 2장 마무리 (1) | 2021.04.24 |
---|---|
[4.23] 배열이란? (1) | 2021.04.23 |
[4.20] 02-2 배열이란? -(1) (1) | 2021.04.20 |
[4.19] 02-1 자료구조와 배열(1) (1) | 2021.04.19 |
[4.18] 01-2 반복되는 알고리즘 (마무리) (0) | 2021.04.18 |