728x90

Array Interview

Questions

1. Reverse an Array

List 를 O(N) 시간 복잡도로 추가 메모리를 사용하지 않고 reverse 하세요.

예) input: nums = [1,3,5,7,9]  output: nums = [9,7,5,3,1]

 

2. Palindrome

Palindrome(회문) 은 거꾸로 읽어도 바로 읽는 것과 같은 단어나 문장의 배열을 말합니다.

예) [1,2,3,4,3,2,1], level, 스위스

 

주어지는 어떤 string 이던 palindrome 인지 아닌지 확인하는 function 을 쓰세요.

 

3. Integer reversion

주어지는 integer(number)을 reverse 하세요.

 

4. Anagram

anagram 은 단어나 문장 내의 글자들을 재 배열하여 다른 단어나 문장이 되는 문자로 보면 된다.

예) lives, elvis / pear, reap / 탄성, 성탄 등..

주어지는 두 개의 string 이 anagram 인지 확인하는 function 을 쓰세요

 

Solution

1. Reverse an Array

def reverse(nums):
    left_index = 0
    right_index = len(nums) - 1
    
    while left < right:
        nums[left_index],nums[right_index] = nums[right_index],nums[left_index]
        left_index += 1
        right_index -= 1

* Array가 아닌 String의 경우

nums = "string"

nums = list(nums)

def reverse(nums):
  li = 0
  ri = len(nums) - 1
  while li < ri:
    nums[li], nums[ri] = nums[ri], nums[li]
    li += 1
    ri -= 1
  nums = ''.join(nums)

 

2. Palindrome

def is_palindrome(s):
    return s == s[::-1]

이 짧은 코드 뒤의 palindrome 인지 확인하는 코드는

nums = [1,2,3,2,1]

# nums = list(nums) "String 인 경우"

def reverse(nums):
  li = 0
  ri = len(nums) - 1
  while li < ri:
    nums[li], nums[ri] = nums[ri], nums[li]
    li += 1
    ri -= 1
  # nums = ''.join(nums) "String 인 경우"

def is_palindrome(nums):
  reverse(nums)
  if nums == nums[::-1]:
    print(True)
  else: 
    print(False)

is_palindrome(nums)

 

3. integer 을 string, list 로 전환하지 않는 한 위에서 만든 reverse와 같은 function을 사용할 수 없다.

nums = 1234

def reversed_int(nums):
  reversed_nums = 0
  remainder = 0

  while nums > 0:
    remainder = nums % 10
    reversed_nums = reversed_nums * 10 + remainder
    nums = nums // 10

reversed_int(nums)

4. Anagram

def is_anagram(str1, str2):
  if len(str1) != len(str2):
    return False

  str1 = sorted(str1)
  str2 = sorted(str2)

  for i in range(len(str1)):
    if str1[i] != str2[i]:
      return False
      
  return True
str1 = "lives"
str2 = "elvis"

def is_anagram(str1, str2):
  str1 = list(str1)
  str2 = list(str2)

  print(str1, str2)
  str1.sort()
  str2.sort()
  
  if str1 == str2:
    return True
  return False
728x90
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기