max, min, sum의 포맷 스트링과의 사용

def solution(a, b):
    return int(max(f"{a}{b}", f"{b}{a}"))

포맷스트링의 값에 숫자형을 넣어 min, max를 사용 가능하다.

딕셔너리와 zip의 사용

def solution(n, control):
    answer = n  # 시작값을 n으로 설정
    for i in control:
        if i == 'w':
            answer += 1
        elif i == 's':
            answer -= 1
        elif i == 'd':
            answer += 10
        elif i == 'a':
            answer -= 10
    return answer

# 위와 같은 코드(특정 동작에 특정 값이 나와야 하는 경우) zip으로 임의의 매핑을 시켜 사용할 수 있다.
def solution(n, control):
    key = dict(zip(['w','s','d','a'], [1,-1,10,-10]))
    return n + sum([key[c] for c in control])
    
# 아니면 딕셔너리를 사용할 수도 있다. 위의 경우는 zip을 통해 딕셔너리처럼 사용했다고 볼 수 있다.
def solution(n, control):
    answer = n
    c = { 'w':1, 's':-1, 'd':10, 'a':-10}
    for i in control:
        answer += c[i] # 딕셔너리의 키 참조는 이렇게 하기
    return answer

lambda와 for문의 사용 구분

def solution(str_list, ex):
    return ''.join(filter(lambda x: ex not in x, str_list))
    
# 위는 람다식, 아래는 for문을 사용한 풀이이다. 리스트를 순차적으로 방문하는 경우 lambda를 사용하며
# lambda를 사용 시 if문에 대한 문제를 겪는다면 filter로 처리가 가능
def solution(str_list, ex):
    return ''.join([i for i in str_list if not(ex in i)])

int()의 tip

def solution(n_str):
    return str(int(n_str))

길이가 같은 배열 묶어 생각하기

# my_strings와 parts 배열의 길이는 같다

# zip으로 묶어 단계별로 풀이
def solution(my_strings, parts):
    return ''.join([x[y[0]:y[1]+1] for x,y in zip(my_strings, parts)])

# enumerate에서 n차원 배열 같은 경우 이와 같이 소괄호로 묶어 값을 가져올 수 있다.
def solution(my_strings, parts):
    answer = ""
    for i, (s, e) in enumerate(parts):
        answer += my_strings[i][s:e+1]
    return answer

# zip이나 enumerate를 사용하여 인덱스를 맞춘 것과 달리 for문의 i를 통해 인덱스를 통일한 풀이이다.
# 가독성면에서 위의 두 가지 방법의 사용이 좋을 것 같다.
def solution(my_strings, parts):
    answer = ''.join([my_strings[i][parts[i][0]:parts[i][1]+1] for i in range(len(parts))])
    return answer

포함 여부

# 아래와 같이 숫자 배열에서 특정 숫자의 포함 여부를(True, False)반환 후 int(1, 0)으로 바꾸어 표기가 가능
def solution(num_list, n):
    return int(n in num_list)

홀수, 짝수 구분 비트연산

a & b & 1 # 이게 true라면 a와 b가 모두 홀 false라면 둘 중 하나가 홀수 혹은 둘 다 짝수이다.
(a | b) & 1 # 이게 true라면 둘 중 하나는 홀수, false하면 두 수 모두 짝수이다.

# 비트 연산으로 풀이 해 보았다.
# arr의 길이가 홀수라면 짝수번째 수에 n 더하기,
# arr의 길이가 짝수하면 홀수번째 수에 n 더하기
def solution(arr, n):
    return [arr[i]+((len(arr)&1)==(not(i%2)))*n for i in range(len(arr))]
    
# 홀짝에 따라 시작점을 다르게, 연산도 다르게 할 수 있다.
def solution(n):
    answer = sum([i**((not(n&1))+1) for i in range((n&1),n+1,2)])
    return answer

list comprehension의 이차원 반복문

# list comprehension에 이차원 반복문을 적용한 예제
def solution(arr):
    answer = [i for i in arr for j in range(i)]
    return answer

연속적 replace()

# 문자열 내의 A와 B를 바꾼다.
def solution(myString, pat):
    return int(pat in myString.replace("A",'C').replace('B','A').replace('C','B'))

문자열을 리스트로