Computer Science/자료구조

[4.21] 02-1 배열하는 알고리즘 (2)

토마토. 2021. 4. 21. 19:57

배열 원소를 역순으로 정렬하기

교환 횟수는 원소 수 // 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