파이썬 코딩테스트 자주 쓰는 메소드

taehoyoon·2023년 7월 1일
0

코딩테스트

목록 보기
1/11
post-thumbnail

나 볼라고 정리한 코딩테스트 메소드 모음


List (리스트)

pop()

리스트에서 특정 인덱스의 요소를 삭제하고 그 요소를 반환
인덱스가 주어지지 않으면 마지막 요소를 삭제하고 반환

list = [1, 2, 3, 4, 5]

a = list.pop() # 마지막 인덱스의 원소를 삭제하고 이를 반환
print(a) # 5
print(list) # [1, 2, 3, 4]

b = list.pop(0) # 0 인덱스의 원소를 삭제하고 이를 반환
print(b) # 1
print(list) # [2, 3, 4]

remove()

리스트에서 첫 번째로 발견한 특정 값을 삭제

list = [1, 2, 3, 4, 5]
list.remove(3) # 반환값 없음
print(list) # 출력: [1, 2, 4, 5]
list.remove(6)  # ValueError: list.remove(x): x not in list

sort()

리스트의 요소를 정렬
reverse=True를 인자로 주면 내림차순 정렬이 가능

lst = [3, 1, 4, 1, 5, 9]
lst.sort()
print(lst)  # 출력: [1, 1, 3, 4, 5, 9]
lst.sort(reverse=True)
print(lst)  # 출력: [9, 5, 4, 3, 1, 1]

insert()

리스트의 해당 위치에 해당 요소를 입력

my_list = [1, 2, 3]
my_list.insert(1, 'a')
print(my_list) # 출력: [1, 'a', 2, 3]

리스트 내포

리스트 생성하는 방법 (List Comprehension)

[expression for item in iterable]

리스트 안에 for문을 넣는 방법
아래와 같이 응용 가능

numbers = [1, 2, 3, 4, 5]

squares = [number**2 for number in numbers]
print(squares)  # 출력: [1, 4, 9, 16, 25]

even_squares = [number**2 for number in numbers if number % 2 == 0]
print(even_squares)  # 출력: [4, 16]

입력받을 때도 요긴하게 쓰임

# 입력: 3 4 5
list = [int(_) for _ in input().split()] # list = [3, 4, 5]

리스트 입력

띄어쓰기로 구분된 입력

num_list = list(map(int, input().split())) # 입력: 1 2 3 4 5
print(num_list) # 출력: [1, 2, 3, 4, 5]

띄어쓰기 없는 입력

room = list(input()) # 입력: .o...*.
print(room) # 출력: ['.', 'o', '.', '.', '.', '*', '.']

리스트 출력

num_list = [1, 2, 3, 4, 5]
print(*num_list) # 출력: 1 2 3 4 5

문자열

문자열 합치기

+ 연산자로 간단하게 가능

num1 = 5
num2 = 3
print(str(num1) + str(num2)) # 출력: 53 (type:str)

문자열 자르기

인덱싱으로 간단하게 가능

num = 12345
str = str(num)[1:-1]
print(str) # 출력: 234 (type:str)

유니코드

문자열을 유니코드로 바꾸기

ord() 함수를 사용하여 문자를 해당 문자의 유니코드로 변환

char = 'A'
unicode_val = ord(char)
print(unicode_val)  # 출력: 65 (type:int)

유니코드를 문자열로 바꾸기

chr() 함수를 사용하여 정수 유니코드 값을 해당 유니코드의 문자로 변환

unicode_val = 66
char = chr(unicode_val)
print(char)  # 출력: B (type:str)

유니코드 값에 연산하기

유니코드 값은 정수형이므로 일반적인 산술 연산이 가능

char = 'A'
new_unicode_val = ord(char) + 1
new_char = chr(new_unicode_val)
print(new_char)  # 출력: B (type:str)

for 문

파이썬에서는 for 루프와 else를 함께 사용할 수 있다..!

for 루프와 else를 함께 사용하면 for 루프가 완전히 완료되었을 때 (즉, 중간에 break로 중단되지 않았을 때) else 블록이 실행된다

  • 검색 또는 찾기와 같은 작업에서 활용할 수 있다
    • 예를 들어, 어떤 항목을 리스트에서 찾아내고, 만약 그 항목이 리스트에 없다면 대안적인 동작을 수행하도록 코드를 작성이 가능하다
for i in range(5):
    print(i)
    if i == 3:
        break
else:
    print("Loop finished normally.")
  • 이 코드에서는 i가 3일 때 break로 루프를 중단하므로, "Loop finished normally."는 출력되지 않는다
  • break가 없거나 조건에 의해 실행되지 않는다면, else 블록이 실행된다

itertools

효율적인 반복을 위해 파이썬에서 제공하는 라이브러리

permutations

순열 만들어주는 메소드

iterable한(리스트나 문자열 등) 입력을 해당 크기의 순열로 만들어준다
import itertools
for i in itertools.permutations('ABC', 2):
    print(i)  # ('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B') 순서로 출력됨

combinations

조합 만들어주는 메소드

iterable한(리스트나 문자열 등) 입력을 해당 크기의 조합으로 만들어준다
import itertools
for i in itertools.combinations('ABC', 2):
    print(i)  # ('A', 'B'), ('A', 'C'), ('B', 'C') 순서로 출력됨

기타

A랑 B 스왑

A, B = B, A

입력

많은 양의 입력을 받아야할 때, 조금이라도 더 빠르게 받을 수 있는 방법

import sys
input = sys.stdin.readline

n = int(input())

별게 다 있다

profile
어흥🦁

0개의 댓글