AI 부트캠프/챕터2(10.14~11.08)

TIL 25

musukie 2024. 10. 30. 15:51

강의 외부에서 추가로 알게 된 내용

  • swapcase() 메서드

파이썬의 문자열 객체에서 제공하는 메서드로, 문자열의 대문자와 소문자를 서로 변환하는 기능을 수행한다. 이 메서드를 사용하면 각 문자에 대해 대문자는 소문자로, 소문자는 대문자로 바꿀 수 있다. 기본 사용법은 아래의 코드와 같다.

string.swapcase()
# string 은 변환할 문자열이다.

 

반환값으로는 변환된 문자열을 반환한다. 예시는 아래와 같다.

# 기본적인 대소문자 변환
text = "Hello World"
result = text.swapcase()
print(result)  # "hELLO wORLD"

# 모든 문자가 소문자인 경우
text = "python programming"
result = text.swapcase()
print(result)  # "PYTHON PROGRAMMING"

# 모든 문자가 대문자인 경우
text = "PYTHON PROGRAMMING"
result = text.swapcase()
print(result)  # "python programming"

# 혼합된 경우
text = "Hello Python 123"
result = text.swapcase()
print(result)  # "hELLO pYTHON 123"

 

swapcase() 메서드는 숫자나 특수문자는 변환하지 않고 그대로 유지한다. 이 메서드는 새로운 문자열을 반환하며, 원본 문자열은 변경되지 않는다. 문자열은 불변(immutable) 객체이기 때문에, 메서드를 호출하면 항상 새로운 객체가 생성된다.

 

  • items() 메서드

파이썬의 딕셔너리(dictionary)에서 사용되는 메서드로, 딕셔너리의 모든 키-값 쌍을 포함하는 뷰 객체를 반환한다. 이 메서드는 딕셔너리의 각 항목을 반복(iterate)하거나, 키와 값을 동시에 접근할 때 매우 유용하다. 기본 사용법은 아래의 코드와 같다.

dict.items()
# dict 는 항목을 가져오고자하는 딕셔너리다.

 

반환값으로는 딕셔너리의 모든 키-값 쌍을 포함하는 뷰 객체를 반환한다. 이 뷰 객체는 각 쌍을 튜플 형태로 나타낸다. 예시를 살펴보자.

# 기본 사용법
my_dict = {'a': 1, 'b': 2, 'c': 3}
items = my_dict.items()
print(items)  # dict_items([('a', 1), ('b', 2), ('c', 3)])

# for 루프에서 사용하기
my_dict = {'apple': 5, 'banana': 3, 'orange': 7}
for fruit, quantity in my_dict.items():
    print(f"{fruit}: {quantity}")
# 출력
apple: 5
banana: 3
orange: 7

# 리스트로 변환하기
my_dict = {'x': 10, 'y': 20, 'z': 30}
items_list = list(my_dict.items())
print(items_list)  # [('x', 10), ('y', 20), ('z', 30)]

 

 

데이터를 처리할 때 사용할 수 있다. 딕셔너리의 모든 키와 값을 동시에 접근할 때 유용하다. 예를 들어, 학생의 점수를 저장한 딕셔너리에서 학생의 이름과 점수를 출력할 때 사용할 수 있다. 또 items() 메서드를 사용하여 딕셔너리의 데이터를 다른 형식으로 변환하거나 조작할 수 있다.

 

  • count() 메서드

문자열 내에서 특정 문자가 등장하는 횟수를 세어 반환하는 메서드다. 이 메서드를 통해 특정 문자가 문자열에서 몇 번 나타나는지를 쉽게 확인할 수 있다. 기본 사용법은 아래의 코드와 같다.

string.count(substring)
# string 은 검색할 대상이 되는 문자열이고,
# substring 은 등장 횟수를 세려는 부분 문자열(문자 하나 또는 여러 문자)이다.

 

예시 코드를 살펴보자.

# 문자 등장 횟수 세기
text = "hello"
print(text.count("l"))  # 출력: 2

# 단어 등장 횟수 세기
sentence = "the quick brown fox jumps over the lazy dog"
print(sentence.count("the"))  # 출력: 2

# 문자열에 없는 경우
text = "banana"
print(text.count("z"))  # 출력: 0

 

  • 최대공약수(GCD : Greatest Common Divisor)와 최소공배수(LCM : Least Common Multiple)

 

최대공약수(GCD)는 두 수의 공통 약수 중 가장 큰 값이다. Python에서는 math 모듈의 gcd 함수를 사용하여 쉽게 구할 수 있다. 최소공배수(LCM)는 두 수의 공배수 중 가장 작은 값이다. 두 수의 곱을 최대공약수로 나누면 최소공배수를 구할 수 있습니다. 이를 코드로 구현하면 아래와 같다.

import math

def solution(a, b):
    gcd_value = math.gcd(a, b)  # 최대공약수
    lcm_value = (a * b) // gcd_value  # 최소공배수
    return [gcd_value, lcm_value]

 

 

  • 다양한 진법의 숫자 문자열을 10진법으로 변환하기

다양한 진법의 숫자 문자열을 10진법으로 변환할 수 있다. 기본 문법은 아래 코드를 참고하자.

int(string, base)
# string 은 변환할 숫자 문자열. 이 문자열은 해당 진법으로 표현된 숫자를 나타낸다.
# base 는 숫자가 표현된 진법을 지정하는 정수. 범위는 2부터 36까지 가능하다.

 

예시 코드는 아래와 같다.

# 이진법(2진법) 변환
binary_str = '1010'  # 2진법
decimal_value = int(binary_str, 2)  # 10진법으로 변환
print(decimal_value)  # 출력: 10

# 3진법 변환
ternary_str = '210'  # 3진법
decimal_value = int(ternary_str, 3)
print(decimal_value)  # 출력: 21

# 4진법 변환
quaternary_str = '123'  # 4진법
decimal_value = int(quaternary_str, 4)
print(decimal_value)  # 출력: 27

# 16진법 변환
hex_str = '1A'  # 16진법
decimal_value = int(hex_str, 16)
print(decimal_value)  # 출력: 26

 

주의사항에 대해 알아보자. 문자열은 해당 진법의 유효한 숫자만 포함해야 한다. 예를 들어, 4진법에서 '1234'는 잘못된 문자열이다. 진법의 범위, 즉 base는 2에서 36까지 설정할 수 있으며, 10 이상의 숫자는 알파벳으로 표시된다. (예: 10은 'A', 11은 'B', ... 35는 'Z')

 

  • divmod(a, b)

파이썬에서 사용되는 내장 함수로, 주어진 두 숫자(여기서는 n과 3)를 나누어서 나머지를 동시에 반환한다. 이 함수는 두 개의 값을 튜플 형태로 반환한다. 기본 문법은 아래의 코드와 같다.

divmod(a, b)
# a 는 피연산자(나눌 숫자)
# b 는 나누는 숫자

 

반환값으로는 (몫, 나머지) 형태의 튜플을 반환한다. 즉, 은 a를 b로 나눈 결과의 정수 부분이고, 나머지는 a를 b로 나눈 결과의 나머지다. 예시 코드는 아래와 같다.

# 기본 사용
result = divmod(10, 3)
print(result)  # 출력: (3, 1)

# 음수 처리
result = divmod(-10, 3)
print(result)  # 출력: (-4, 2)
# -10을 3으로 나누면 몫은 -4이고, 나머지는 2이다.
# 음수에 대한 나눗셈은 파이썬에서 항상 나머지가 양수로 유지된다.

 

divmod 함수는 반복문에서 나머지와 몫을 동시에 필요로 할 때 유용하게 사용된다. 예를 들어, 진법 변환, 시간 계산, 그리고 분할 문제에서 몫과 나머지를 함께 구하고 싶을 때 자주 사용된다.

 

'AI 부트캠프 > 챕터2(10.14~11.08)' 카테고리의 다른 글

TIL 27  (0) 2024.11.01
TIL 26  (1) 2024.10.31
TIL 24  (0) 2024.10.29
TIL 23  (0) 2024.10.28
WIL 4  (0) 2024.10.25