본문 바로가기

TIL

[TIL 2024. 03. 04]

오늘 한 일

  • 팀 노션 작성
  • 알고리즘 10문제(프로그래머스)
  • 알고리즘 세션
  • AI 스쿼드 3
  • Github 일일커밋 시작
  • TIL 작성

 

오늘의 리뷰

1. range(len()) 복습

a_list = [1, 2, 3, 5, 6, 7, 4, 7]
for i in range(len(a_list)):  # 리스트 a_list의 길이를 범위로 설정하여 반복
    print(f'index: {i} , value: {a_list[i]}')


b = 'watermelon'
for i in range(len(b)):  # 문자열 watermelon의 길이를 범위로 설정하여 반복
    print(i, b[i])

 

2. 두수의 합, 차, 곱, 나눗셈

(1) lambda식

  • 함수_본질적으로 반복을 편하게 하기 위해 선언하는 것.
  • 하지만 간단한 식이나 한 번 쓰고 말(재사용x) 코드라면 lambda식을 통해 한줄로 코드 작성하는 것도 좋음
solution = lambda num1, num2 : num1 + num2

solution = lambda num1, num2 : num1 - num2

solution = lambda num1, num2 : num1 * num2

solution = lambda num1, num2 : num1 / num2

 

(2) 새로운 접근 (esp. 곱)

def solution(num1, num2):
    i = 0
    answer = 0
    while i < num2:
        answer += num1
        i += 1
    return answer

3. 숫자 비교하기

def solution(num1, num2):  
    if num1 == num2:
        answer = 1
    else:
        answer = -1
    return answer


def solution(num1, num2): 
    return 1 if num1 == num2 else -1

4. 몫, 나머지 구하기

  • 몫(//), 나머지(%) _단, num2가 0인 경우는 연산 자체가 불가능 (=> 예외처리가 없으며 오류 발생함)
  • divmod()는 튜플로 반환(return)됨. 따라서 인덱스로 바로 접근할 수 있
def solution(num1, num2):
    answer = -1
    answer = num1 // num2
    return answer


def solution(num1, num2): 
    answer = divmod(num1, num2)
    return answer[0]
# 몫 구하기


def solution(num1, num2):
    answer = -1
    answer = num1 % num2
    return answer
    
    
def solution(num1, num2): 
    answer = divmod(num1, num2)
    return answer[1]
    
    
def solution2(num1, num2):
    while num1 >= num2:
        num1 -= num2
    return num1
# 나머지 구하기

 

5. 각도기

def solution(angle):
    if 0 < angle < 90:
        answer = 1
    elif angle == 90:
        answer = 2
    elif 90 < angle < 180:
        answer = 3
    elif angle == 180:
        answer = 4
    return answer
    
    
def solution(angle):
	return 2 if angle ==90 else 1 if angle <90 else 4 if angle ==180 else 3

 

6. 짝수의 합

def solution(n):
    return sum([x for x in range(2, n+1, 2)])       # 리스트 comprehension


def solutions2(n):
    return sum(range(2, n+1, 2))


def solutions3(n):
    return sum(filter(lambda x: x % 2 == 0, range(n+1)))


def solutions4(n):
    cnt = 0
    for i in range(2, n+1, 2):
        cnt += i
    return cnt

 

7. 알고리즘 세션_요약

  • 시간복잡도: 빅오 표기법
  • => for문_O(N), 이중for문_O(N^2)(=제곱, i를 도는 동안 j도 도니까), 한 개의 파일에서 시간복잡도는 더 큰 걸 따라감
  • 공간복잡도
  • 배열 및 linked list => 일반/더블/원형 linked list: WIL

'TIL' 카테고리의 다른 글

[TIL 2024. 03. 06]  (0) 2024.03.07
[TIL 2024. 03. 05]  (0) 2024.03.06
[TIL 2024. 02. 29]  (0) 2024.02.29
[TIL 2024. 02. 28]  (0) 2024.02.28
[TIL 2024. 02. 27]  (0) 2024.02.28