AI 웹개발 취업캠프 - 10일차 [NIPA/정보통신산업진흥원]

윤태경·2023년 8월 1일
0
post-custom-banner

📝과제 1 - 문자끼리 비교하는 연산이 상대적으로 불리한지 이유에 대해 정리해보기

숫자끼리 비교하는 연산과 문자끼리 비교하는 연산 중 왜 문자끼리 비교하는 연산이 상대적으로 불리한지 이유에 대해서 정리해보고 샘플 코드를 구현해서 제출하기

문자열 비교 연산

파이썬에서 문자열은 문자들의 시퀀스이다. 시퀀스 자료형의 비교는 사전식 순서를 사용한다. 먼저 첫 두 항목을 비교해서 다르면 그 결과를 내고 같다면 다음 두 항목을 비교하며 이런 식으로 어느 한 시퀀스가 소진될 때까지 계속한다. 두 시퀀스의 모든 항목이 같다고 비교되면 시퀀스들은 같은 것으로 취급된다. 문자열의 사전식 배열은 개별 문자들의 순서를 정하는데 유니코드 코드 포인트 숫자를 사용한다.

이유정리

str1 = "바나나"
str2 = "바구니"
str3 = "사과"

print(str1 == str2) # False
print(str1 > str2) # True
print(str1 > str3) # False
print(ord("나"), ord("구")) # 45208 44396
print(ord("바"), ord("사")) # 48148 49324

바나나와 바구니가 같은지 비교했을 때, 첫 번째 문자인 바는 같으니 그 다음 문자인 "나"와 "구"를 비교할 텐데, 내장함수인 ord로 해당 문자의 유니코드 코드 포인트를 나타냈을 때 각각 45208 44396을 반환했다. 즉 "나"의 코드 포인트가 "구"보다 크기 때문에 ==비교일 때는 False를 반환하고 >비교일 때는 True를 반환했다.

이런 과정이 있기 때문에 숫자끼리 비교하는 연산보다 문자끼리 비교하는 연산이 불리할 것 같다고 생각이 든다.

참조

https://docs.python.org/ko/3/tutorial/datastructures.html#comparing-sequences-and-other-types

📝과제 2 - 파이썬으로 set()구문 없이 중복을 제거하는 코드 작성하기

파이썬으로 일부 중복되는 element를 저장하고 최소 element가 10개이상 되는 배열을 만든다. 그리고 set() 구문 없이 오로지 for in 문으로 배열의 중복된 값을 없애는 코드를 작성하기

fruits = ["사과", "바나나", "체리", "파인애플", "파인애플", "파인애플", "바나나", "블루베리", "망고", "수박", "오렌지", "사과", "바나나", "체리", "딸기", "한라봉", "딸기", "블루베리"]
new_fruits = []

for i in fruits:
  if not i in new_fruits:
    new_fruits.append(i)

print(fruits) #['사과', '바나나', '체리', '파인애플', '파인애플', '파인애플', '바나나', '블루베리', '망고', '수박', '오렌지', '사과', '바나나', '체리', '딸기', '한라봉', '딸기', '블루베리']
print("중복된 과일들의 개수: ", len(fruits))  # 중복된 과일들의 개수:  18
print(new_fruits) # ['사과', '바나나', '체리', '파인애플', '블루베리', '망고', '수박', '오렌지', '딸기', '한라봉']
print("중복제거된 과일들의 개수: ", len(new_fruits)) # 중복제거된 과일들의 개수:  10

본 후기는 정보통신산업진흥원(NIPA)에서 주관하는 <AI 서비스 완성! AI+웹개발 취업캠프 - 프론트엔드&백엔드> 과정 학습/프로젝트/과제 기록으로 작성 되었습니다.

profile
frontend
post-custom-banner

0개의 댓글