본문 바로가기

전체 글156

탐색 리스트 내에서 데이터를 매우 빠르게 탐색하는 이진 탐색 알고리즘은 종류에 따라 상황에 맞게 사용하면 시간적&공간적 효율을 가져다 줄 수 있다. 순차 탐색 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 차레대로 확인하는 방법이다. 정렬되어 있지 않은 데이터에 대해서 탐색을 진행할 때 효율적이다 리스트 내 데이터가 아무리 많아도 시간이 충분하다면 항상 원하는 원소를 찾을 수 있다는 장점이 있다. 리스트에 특정 값이 있는지 순차적으로 조사하기 체크하여 찾기 때문에 구현이 간단하다. 리스트 자료형의 Count() 메서드는 내부적으로 순차탐색을 통해서 수행이 된다. 가장 앞에 있는 원소부터 하나씩 확인하므로 시간 복잡도는 O(N)이다. 순차 탐색 소스코드 ( py ) def sequent.. 2021. 8. 4.
패키지 패키지 패키지는 도트(_)를 사용하여 파이썬의 모듈들을 계층적 구조로 관리하는 것으로 모듈간의 계층적 관계를 통해 유지와 보수를 쉽게 만들어 준다. 예로 Person_jam.py 라면 Person은 패키지 이름이고 jam은 모듈로 Person 패키지의 jam모듈로 해석된다. 가상의 game 패키지 예시 game/ __init__.py sound/ __init__.py echo.py wav.py graphic/ __init__.py screen.py render.py play/ __init__.py run.py test.py game, sound, graphic, play는 디렉터리고 확장가 .py인 파일은 파이썬의 모듈이다. game인 이 디렉터리 사이에서 루트 디렉터리이며 그 외는 서브 디렉터리이다. .. 2021. 8. 3.
모듈 모듈 모듈은 함수나 클래스 공용변수를 모아놓은 일종의 파일이다. 이러한 모듈을 만들어두면 다른 파이썬 프로그램이나 환경에서 불러와서 모듈 내에 선언된 내용을 사용가능하게 한다. 예를 들어 덧셈과 뺄셈을 하는 함수를 가진 calc.py라는 모듈을 만들면 아래와 같을 것이다 # 파일명 : calc.py def add(a , b) return a+b def sub(a , b) return a-b 이런식으로 단순히 뺄셈과 덧셈의 함수를 가진 .py 확장자의 파이썬 파일도 모듈이라고 할 수 있다. 즉 모든 파이썬 확장자 파일은 모듈이 될 수 있다는 점이다. 이렇게 설정한 모듈을 불러오는 방법은 import를 사용하여 간단하게 불러올 수 있다. 만약에 파일이 같은 디렉터리 내에 위치하고 있다면 import calc.. 2021. 8. 2.
클래스 절차지향 프로그래밍 방식과 달리 객체지향 프로그래밍은 객체를 정의하는 것에서 시작한다. 클래스를 이용하면 생성하는 것은 새로운 타입을 생성하는 것이라고 하기도 한다. 앞서 배운 정수, 실수, 문자열 등 기본 자료형 & 자료구조 모두 클래스를 통해 만들어진 타입이다. 파이썬에서는 함수도 객체로 처리하며 함수에 대해 type()함수를 사용하면 이. 출력되는 것을 확인할 수 있다. 클래스 선언 class 클래스이름: 선언된 클래스에 대해서 객체를 생성하기 위해서는 할당할 변수에 클래스를 연결해주면 된다. 클래스를 정의한다는 것은 새로운 데이터 타입을 정의한 것이기 때문에 실제로 사용하기 위해서는 인스턴스를 통해서 사용할 수 있다. 인스턴스 생성 class Car : pass hyundai = Car() kia.. 2021. 7. 30.
Code 100제 (2) 6037> 문장 여러 번 출력하기 ( 반복 횟수, 문장 ) n = int(input()) s = input() for _ in range(n): print(s,end='') 6039> 실수 두 개로 거듭제곱하기 n1, n2 = map(float, input().split()) print((n1) ** (n2)) 6042> 실수 1개 입력받고 소숫점이하 자리 변환 n = float(input()) print(format(n,".2f")) 6044> 정수 2개로 합,차,곱,몫,나머지, 나눈 값 자동 계산 (단 0 2021. 7. 30.
입출력 사용자 입출력 input (입력) 사용자의 입력을 받아서 문자열로 반환한다. input에 인자를 넣게 되면 입력 받을 시에 프롬프트를 띄워서 안내 문구를 추가하여서 입력을 주는 사용자에게 정보를 제공할 수 있다. s = input() >> hello world s 'hello world' n = input('숫자를 입력하시오: ') >> 숫자를 입력하시오 : 3 n '3' type(n) print (출력) print는 입력한 자료형을 출력하는 것으로 가볍게 특징만 살펴보자 큰따옴표로 둘러싸인 문자열은 + 연산과 동일하다 print("life" "is" "too short") # lifeistoo short print("life"+"is"+"too short") # lifeistoo short 문자열 띄어.. 2021. 7. 29.
Code 100제 (1) 6015 > 두 개의 입력 정수를 받아 줄을 바꿔 출력하라 a, b = input().split() # 공백을 기준으로 입력된 값들을 나누어 자른다 print(“{}\n{}”.format(a,b)) 6018 > 24시간 시:분 형식으로 시간이 입력될 때, 그대로 출력하라 a, b = input().split(‘:’) print(a,b, sep=’:’) 6028 > 10진수를 입력받아 16진수로 출력한다 ( 대,소문자) x = input() a = int(x) print(“%x”%a) # 소문자 print(“%X”%a) # 대문자 6029 > 16진수를 입력받아 8진수로 출력 a = input() n = int(a, 16) print(‘%o’ %n) 6033> 문자 1개 입력받아 유니코드 다음 문자로 출력.. 2021. 7. 28.
파일 2021. 7. 27.
함수 함수 def 파이썬 함수의 기본 구조 def 함수명(매개변수) : .... return 반환값 매개변수는 N개 이상 설정할 수 있고 결과값은 없거나 하나이다. 입력값이 없이 단순히 함수 자체를 call했을 때 특정한 행동을 하는 입력값 없는 함수도 만들어 사용할 수 있다. 이와 마찬가지로 결과값 없이 입력한 내용에 대해서 단순히 출력하거나 메시지를 나타내기 위해 결과값이 없는 함수도 만들어 사용할 수 있다. 이 둘을 합친 매개변수&결과값이 없는 단순한 함수도 사용가능하다. 함수 호출 시 인수를 지정하여 호출하는 것도 가능하다. 또한 함수 선언시에 매개변수를 초기화할 수 도 있다. def add(a, b) return a + b >>> result = add(a=3, b=7) # a에 3.. 2021. 7. 26.
Greedy 주로 교제에서 "탐욕법"이라고 소개되는 그리디(Greedy) 알고리즘은 단순하면서 강력한 해결 방법이다. 탐욕법이라고 불리는 이유는 미래 상황을 생각하지 않고 단순히 현재 상황에서 제일 최선의 것을 고르기 때문이다. 즉 현재의 상황에서만 고려하고 이 선택이 미래에 불러올 영향에 대해서는 전혀 고려하지 않는다. 그리드 알고리즘은 최적의 해를 도출한 가능성이 낮다. 현재의 상황에 대해서만 판단하기 때문에 주기가 긴 코드에 대해서 현재의 선택이 미래에 악영향을 끼칠 가능성이 크기 때문이다. 따라서 그리디 알고리즘을 통해서 문제해결책을 세웠다면, 그 해법이 옳은지 검증해야 한다. 아래에 나올 동전 문제에 대해서는 동전 중 큰 단위가 항상 작은 단위의 배수임이 확신되므로, 작은 단위의 동전을 종합해 다른 해가 나.. 2021. 7. 25.
반복문 ( for , while ) for 파이썬에서 주로 사용하는 반복문은 for문 , while문 종류가 있다. 파이썬에 for문은 반복문은 시퀀스를 이용하여 명령을 반복한다. 먼저 for문의 기본 구조는 아래와 같다. for 변수 in [ 리스트 or 튜플 or 문자열 ] : 실행할 코드 ... 이 때 for문 변수를 2개 이상으로 설정 가능하다. 물론 이 때, in안의 반복되는 시퀀스도 2개 이상이어야 한다. 예를 들면 아래와 같다. list = [ (1, 2), (3, 4), (5,6) ] for (f, b) in list: 실행할 코드 .... 이 예시에서 in 뒤에 튜플 2개 값을 하나의 시퀀스로 가지는 리스트를 받고있다. 따라서 한 번의 반복을 돌 때마다 변수 2개가 할당 가능하다. 이때 f에는 튜플의 첫번째 값 , 그리고 .. 2021. 7. 24.
Git (10) : reset 이력 되돌리기 ( RESET) 지금까지 우리는 커밋을 통해서 파일의 버전들을 관리하는 방법들을 GIT을 이용해 실습을 진행하였다. 이렇게 만들어진 커밋들은 순차적으로 트리형식으로 저장되어 각 커밋은 이전 커밋으로 돌아갈 수 있는 "스냅샷"을 가지고 있다. 이제는 이렇게 관리되어진 commit들을 통해 이전의 commit으로 되돌리는 RESET에 대해서 학습하자 협업 프로젝트나 개인 프로젝트에서 어떤 수정본을 작업하다가 보면 수정을 하는 방향의 접근이 잘못되어 이전의 버전으로 commit을 되돌리고 새롭게 작업을 시작할 일이 자주 생긴다. 이 때 우리는 commit msg들을 통해서 commit id나 file name을 통해서 제일 최근의 commit이나 특정한 commit으로 복귀할 수 있다. GIT은.. 2021. 7. 22.
반응형