코딩 교육 TIL

2024-03-04 AI 코딩 TIL

HyunjunPark 2024. 3. 4. 20:30
이번주 부터는 알고리즘에 대한 교육이 시작이 되었습니다!

 

알고리즘 예시 문제를 풀면서 배워 나가는 문제입니다.

1. 두수의 차

 

이런식으로 문제의 정답이 나오게 만들면 되는 문제 입니다.

여기서 제한 사항을 추가하기 위해

import random

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

a, b = (random.randint(-50000, 50000), random.randint(-50000, 50000))

result = solution(a,b)

 

랜덤을 넣어서 작성 하였습니다.

2.두수의 곱

두수의 합에서 솔루션 함수의 내용만 바꾸어주면 된다.

import random

def solution(num1, num2):
    answer = num1*num2
    return answer

a, b = (random.randint(0, 100), random.randint(0, 100))

result = solution(a,b)

 

3. 두수 비교하기

 

import random


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


a, b = (random.randint(0, 10000), random.randint(0, 10000))

result = solution(a, b)

 

4.나머지 구하기

이번에는 %를 이용해서 나누는 값을 넣어 주는 방법이다.

import random


def solution(num1, num2):
    answer = num1 % num2
    return answer


a, b = (random.randint(0, 100), random.randint(0, 100))

result = solution(a, b)

 

5. 몫 구하기

처음에 a // b를 했는데 런타임 오류가 발생해서 구글링 결과 divmod를 이용해서
나누어 주는 방법을 찾아서 이 방법을 이용했습니다.

import random


def solution(num1, num2):
    answer = divmod(num1, num2)
    return answer[0]


a, b = (random.randint(0, 100), random.randint(0, 100))

result = solution(a, b)

 

6.나이 출력

여기서는 나이 개산을 하는 법을 적었습니다.

import random


def solution(age):
    answer = 2023 - age
    return answer


a = random.randint(0, 120)

result = solution(a)

 

 

7. 두수의 합

import random


def solution(num1, num2):
    answer = num1 + num2
    return answer


a, b = (random.randint(-50000, 50000), random.randint(-50000, 50000))

result = solution(a, b)

 

8. 두수의 나눗셈

두수의 값을 나누고 거기에 1000을 곱한뒤에 int를 넣어서 정수부분만 가져올 수 있도록 한다.

import random


def solution(num1, num2):
    answer = int((num1 / num2) * 1000)
    return answer


a, b = (random.randint(0, 100), random.randint(0, 100))

result = solution(a, b)

 

9.각도기

각도기 계산 if

import random


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
    else:
        answer = 0
    return answer


a = random.randint(1, 180)

result = solution(a)

 

10.짝수의 합

 

import random


def solution(n):
    answer = 0
    for i in range(n // 2):
        answer += ((i+1)*2)
    return answer


a = random.randint(0, 1000)

result = solution(a)

 

 

 

 

파이썬 테스트 프로그램

 

TestProblem이라는 것 이용해서 문제 풀이 

 

파이참 git hub 업로드하기

 

파이참을 깃 허브에 업로드를 하고 싶어서 새로운 주소를 만들고 거기에 업로드를 할려고 했는데

origin main이 아니라 origin master에 업로드를 했습니다. 그리하여 main으로 옵기기 위해서

https://jeongkyun-it.tistory.com/128

 

[Git] There isn’t anything to compare 해결 방법

서론 필자가 STS를 이용하여 git commit을 하는 과정 중에 새로 원격지를 생성하여 커밋을 한 후 GitHub에서는 Pull Request는 뜨는데 들어가면 아래와 같은 문구로 뜨는 문제가 발생하였다. 어떻게 해결

jeongkyun-it.tistory.com

이곳에서 방법을 찾을 수 있었으며

파이참에서 git을 이용하기 위해서 아래의 사이트에서 설정법을 찾았으며

https://jeunna.tistory.com/95

 

PyCharm Terminal Git Bash로 바꾸기

Ctrl + Alt + S 를 누르면 Setting 창이 뜬다. Tools에 Terminal에서 Shell Path를 Git이 저장된 곳의 bin에서 bash.exe 또는 sh.exe를 선택한다 "~/bash.exe" --login 그리고 경로를 " " 로 감싸주고 --login이라고 적어주고 a

jeunna.tistory.com

 

 


튜터님 강의

 

자료구조 알고리즘

코딩테스트를 왜 하나??

코딩 테스트를 통해서 이사람이 문제해결 능력이 있는지! 검사를 하기 위해

공간 복잡도 : 용량을 최대한 적게 사용을 해서 만든다.

시간을 최대한 적게 사용하는 방법을 찾아서 해야한다.

https://velog.io/@welloff_jj/Complexity-and-Big-O-notation

 

복잡도(Complexity): 시간 복잡도와 공간 복잡도, 그리고 빅오(Big-O) 표기법

시간 복잡도와 공간 복잡도, 그리고 빅오 표기법

velog.io


배열과 리스트

배열

 

 


스택과 큐

스택은 : FIFO
선입후출
스택의 삽입연산을 : push
스택의 삭제연산을 : pop

큐는 : FIFO
선입선출
삭제연산이 이루어지는 프론트(front)에서는 인큐(enQueue)가 이루어짐
삽입연산이 이루어지는 (rear)에서는 디큐(deQueue)가 이루어짐


정렬

버블정렬

리스트에서 두개씩 비교해가면서 점점 오른쪽 부터 맞추어 나가는 방식

https://www.daleseo.com/sort-bubble/

 

[알고리즘] 거품 정렬 - Bubble Sort (Python, Java)

Engineering Blog by Dale Seo

www.daleseo.com

퀵정렬

분할기법과 재귀 알고리즘을 이용한방법

간단하게 기준점으로 나누고 거기서 또 나누고 나누고.........하는 방식

https://www.daleseo.com/sort-quick/

 

[알고리즘] 퀵 정렬 - Quick Sort (Python, Java)

Engineering Blog by Dale Seo

www.daleseo.com

 

선택정렬

선택정렬은 변수하나를 만들어서 리스트를 돌면서 최솟값을 저장하는 칸에 최솟값이 나올때마다 저장을 하게 한다.

https://www.daleseo.com/sort-selection/

 

[알고리즘] 선택 정렬 - Selection Sort (Python, Java)

Engineering Blog by Dale Seo

www.daleseo.com

 

병합정렬

이 방식은 모두 잘게 쪼게어 만들어주는 방식

https://www.daleseo.com/sort-merge/

 

[알고리즘] 병합 정렬 - Merge Sort (Python, Java)

Engineering Blog by Dale Seo

www.daleseo.com

 

힙 정렬

여려가지의 값중에 가장큰값 또는 작은  값을 빨리 찾아내는 방법

https://wikidocs.net/219635

 

20-07. 힙 정렬

힙에 관한 내용은 [파이썬으로 힙(heap) 구현하기](https://wikidocs.net/194445)를 참조한다. 힙 정렬(Heap sort)은 정렬한 자료를 최대 힙이나…

wikidocs.net

 

삽입 정렬

하나씩 늘여가면서 비교하는 정렬

https://www.daleseo.com/sort-insertion/

 

[알고리즘] 삽입 정렬 - Insertion Sort (Python, Java)

Engineering Blog by Dale Seo

www.daleseo.com