목록PYTHON (17)

수학과의 좌충우돌 프로그래밍

1로 만들기 (BAEKJOON - 1463번)

안녕하세요 강민성입니다. 오늘은 오랜만에 알고리즘 문제를 들고 와봤습니다. 겨울방학 동안 백준 사이트에 있는 문제를 풀어보고자 하는데 좋은 문제가 있으면 많이 포스팅 하도록 하겠습니다. 오늘 소개할 문제는 1463번 '1로 만들기' 라는 문제 입니다. 문제부터 보도록 하겠습니다. 문제는 생각보다 간단합니다. 3가지 연산만 골고루 써서 1을 만들어 주면 되는 것이죠. 그래서 문제없이 코드를 작성하였습니다. 123456789101112131415X = int(input()) count = 0while X!=1: print(X) if X % 3 == 0: X //=3 count += 1 elif X % 2 == 0: X //= 2 count += 1 else: X -= 1 count += 1print(coun..

알고리즘/파이썬 2018. 12. 31. 06:00
문자열 함수 find와 index

안녕하세요 강민성입니다. 파이썬 알고리즘을 공부하다가 헷갈린 부분이 있어 가볍게 포스팅을 하고자 합니다. find와 index를 알아보자! 문자열에서 find와 index는 거의 같은 역할을 합니다. 바로 문자열에서 원하는 문자나 문자열이 어디 있는지를 알려주는 것이죠. 위치를 반환할 때는 index 값을 반환하게 됩니다. 1234a = "ssungkang" print (a.index("k")) # 5print (a.find("k")) # 5cs 다음과 같이 문자열 a에서 k를 찾고자 한다면 그에 해당하는 index 값을 return 하게 되는 것이죠. 그렇다면 둘의 차이는 무엇일까요? 차이 역시 간단합니다. find 같은 경우에는 찾는 문자나 문자열이 없을 경우에는 -1 을 return 하게 됩니다. ..

프로그래밍 언어/Python 2018. 12. 30. 23:58
유클리드 알고리즘과 확장된 유클리드 알고리즘

안녕하세요 강민성입니다. 오늘은 유클리드 알고리즘과 그 확장에 대해서 알아보도록 하겠습니다. 유클리드 알고리즘이란? 먼저 유클리드 알고리즘이란 유클리드 호제법이라고도 하며 두 수에 대해서 최대공약수를 구하는 방법입니다. 두 수가 일반적인 방법으로 최대 공약수를 구하기 너무 커졌을 때 이 유클리드 알고리즘을 사용하면 보다 쉽게 구할 수 있습니다. 이제 유클리드 알고리즘을 살펴보면 두 수 a,b에 대해서(a>b), a = q * b + r 라 하면 q 는 몫, r은 나머지가 됩니다. 이 때, gcd(a,b) = gcd(b,r) 이 성립하고 이와 같은 과정을 계속 거쳐 나머지가 0이 되었을 때 나누는 수가 a,b의 최대공약수에 만족하게 됩니다. 예시를 통해서 알아볼까요? 240꽈 46의 최대공약수를 구한다고 ..

알고리즘/파이썬 2018. 12. 1. 21:54
Scoping , LEGB 룰

안녕하세요 강민성입니다. 오늘은 파이썬 변수의 유효 범위에 대해서 알아보도록 하겠습니다. 먼저 scoping rule 이란 변수의 접근이 가능한 범위를 뜻합니다. 이 scope를 결정하는 방식에는 크게 두 가지로 나눌 수 있는데 static scoping 과 dynamic scoping 입니다. 그 중에서 dynamic scoping 에 대해서 알아보도록 하겠습니다. dynamiic scoping를 사용하는 대표적인 예가 바로 python 이죠. 그래서 python 언어를 통해 알아보겠습니다. 파이썬에서 변수는 4가지 경우가 존재합니다. LEGB 가 각각에 해당되는데 이에 대해서 먼저 알아보도록 하겠습니다. Local : 함수 내부의 공간 Enclosing Function Local : 함수를 내포하는 ..

프로그래밍 언어/Python 2018. 12. 1. 16:27
클래스와 인스턴스란? (3) 메소드

안녕하세요 강민성입니다. 저번 시간에 이어서 클래스와 인스턴스에 대해서 더 알아보도록 하겠습니다. 오늘 알아볼 개념은 바로 메소드라는 개념입니다. 메소드란? 메소드는 그 전까지 들어본 적이 없지만 우리가 흔히 사용하는 함수라고 생각하면 됩니다. 함수는 함수지만 클래스 안에서 정의되어 클래스의 인스턴스에만 적용될 수 있는 함수를 메소드라고 부릅니다. 우선 저번 시간에 배웠던 내용을 다시 살펴보도록 하겠습니다. 12345678910111213141516171819class Human(): pass def define_Human(job,age): person = Human() person.job = job person.age = age return person Human.define = define_Human..

프로그래밍 언어/Python 2018. 12. 1. 13:47
클래스와 인스턴스란? (2) 모델링

안녕하세요 강민성입니다. 저번 시간에 이어서 클래스와 인스턴스에 대해서 알아보도록 하겠습니다. 모델링이란? 클래스를 사용하는 이유는 현실의 개념을 더 쉽게 코드로 표현하기 위해서 입니다. 저번 시간에 이어서 Human 클래스를 선언하고 이에 현실에 개념을 적용시켜서 추가해보도록 하겠습니다. 1234567class Human(): pass person = Human()person.job = 'student'person.age = 23cs Human 클래스에 대한 person 객체를 만들어주고 직업, 나이를 지정해주었습니다. pass는 신경 안쓰셔도 상관없습니다. 그런데 사람이 여러 명일 경우에 모두 직업, 나이가 있을 텐데 다음과 같은 방식으로 선언을 하면 번거로울 겁니다. 그래서 사람을 정의해주는 함수를..

프로그래밍 언어/Python 2018. 11. 30. 21:57