이력서를 부풀려서 쓴 지원자 / 핵심적인 업무 능력이 떨어지는 지원자 거르는 용도
간단한 프로그램이나 함수를 구현하는 문제들 풀기
컴퓨터, 언어, 프로그래밍에 대한 지식을 평가
수학이나 논리 퍼즐 문제를 풀수도 있음
정렬대상에 따라 성능 요구조건에 따라 특이사항이 존재, 몇 가지 다른 알고리즘의 상대적 장단점에 대한 차이 설명 (추후 정리 필요)🧚
** malloc 호출
동적, 정적 할당의 장단점 (추후 정리 필요)🧚
맞춤형 메모리 관리자를 써야하는 상황 (추후 정리 필요)🧚
반복해서 호출하여 시간과 스택공간에 오버헤드 발생
특화된 운영체제 사용, 입력장치가 주로 마이크와 소프트 키보드
불편한 텍스트 입력은 최소화 하는 방향으로 인터페이스 구성
def FizzBuzz():
for i in range(1, 101):
isDivBy3 = i % 3 == 0
isDivBy5 = i % 5 == 0
if isDivBy3 and isDivBy5:
print('FizzBuzz')
elif isDivBy3:
print('Fizz')
elif isDivBy5:
print('Buzz')
else:
print(i)
string = 'world'
# 파이썬 slice 기능 사용
reversed_string1 = string[::-1]
# for 문, += 사용
reversed_string2 = ""
for i in range(len(string)-1, -1, -1):
reversed_string2 += string[i]
+=을 사용 하는 것은 string 객체의 immutable한 속성 때문에 객체를 계속 새로 생성한다는 문제점이 있다 (추후 정리 필요)🧚
# 배열 사용
temp = []
for i in range(len(string)-1, -1, -1):
temp.append(string[i])
reversed_string3 = ''.join(temp)
# 내장함수 사용
reversed_string4 = ''.join(reversed(string))
print(reversed_string1) # dlrow 0.0005810260772705078 sec
print(reversed_string2) # dlrow 0.06191301345825195 sec
print(reversed_string3) # dlrow 0.031083106994628906 sec
print(reversed_string4) # dlrow 0.0041310787200927734 sec
실험 결과 :
파이썬 slice 기능 사용 >> 내장함수 사용 >>> 배열 사용 > for 문, += 사용
(추후 정리 필요 - 동작 원리)🧚
# Set : 집합사용 권장
list = [1, 2, 4, 4, 5, 6, 6, 7, 1]
new_set = set(list) # {1, 2, 4, 5, 6, 7}
return list(new_set)
# 구현
def distinct(array): # set화
temp = []
for num in array:
if num not in temp:
temp.append(num)
return temp
def sum_arr(base, other): # 합집합
temp = base.copy() # 값복사로 해야함
for num in other:
if num not in temp:
temp.append(num)
return temp
def complement(base, other): # 차집합
temp = base.copy() # 값복사로 해야함
for num in other:
if num in temp:
idx = temp.index(num)
temp.pop(idx)
return temp
def intersect(base, other): # 합집합
temp = []
for num in base:
if num in other:
temp.append(num)
return temp
# 스택 사용
def checkNestingWithStack(brackets):
stack = []
for b in brackets:
if b == '(':
stack.append(b)
elif not stack:
return False
else:
stack.pop()
return not stack
# 숫자로 count
def checkNestingWithCount(brackets):
cnt = 0
for b in brackets:
if b == '(':
cnt += 1
else:
cnt -= 1
if cnt < 0:
return False
참고 깃헙 : https://github.com/tjdud0123/daily_algorithm/tree/master/%EB%A9%B4%EC%A0%91%EB%8C%80%EB%B9%84
다양한 언어에 익숙하고 가장 적합한 연장을 골라쓰는 것이 중요