목록파이썬 (15)

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

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
클래스와 인스턴스란? (1)

안녕하세요 강민성입니다. 오늘은 파이썬의 클래스와 인스턴스에 대해서 알아보도록 하겠습니다. 객체지향언어에서는 빼놓을 수 없는 개념이죠. 파이썬 언어로 들어가기 전에 현실세계에서 무슨 개념과 유사한지 부터 알아보도록 하겠습니다. 클래스와 인스턴스란? 다음과 같이 두 명의 인간이 있습니다. 한 명은 강사, 한 명은 학생이죠. 그러면 둘은 같다고 할 수 있을까요? 당연히 상황에 따라서 달라질 겁니다. 둘은 강사와 학생이라는 입장에서는 엄연히 다릅니다. 부가 설명을 할 것도 없이 강사와 학생은 이름도, 나이도, 성별도 많은 것이 다를 겁니다. 하지만 둘은 인간이라는 관점에서 같은 인간의 범주로 묶을 수 있습니다. 지금까지의 예시에서 인간이 바로 클래스, 강사와 학생은 인간이라는 클래스의 인스턴스가 됩니다. 그러..

프로그래밍 언어/Python 2018. 11. 30. 21:23
숫자게임(프로그래머스-level3)

안녕하세요 강민성입니다. 이번에 풀 문제는 2018서머코딩 알고리즘 문제 중 하나 입니다. 대회에서 나오는 문제들을 보면 매번 저런 문제를 어떻게 만들어내는지 그저 신기할 따름입니다. 문제를 이해하고 코드를 짜는 것도 적지 않은 시간이 걸리곤 하는데... 요즘 주변에 취업원서 넣고 코딩테스트 보러 가는 사람들이 많아서 그런지 알고리즘의 중요성을 새삼 다시 깨닫습니다. 1차에서 떨어지는 경우도 비일비재 하더라고요. 그러면 문제 보도록 하겠습니다. [ 문제 ] xx 회사의 2xN명의 사원들은 N명씩 두 팀으로 나눠 숫자 게임을 하려고 합니다. 두 개의 팀을 각각 A팀과 B팀이라고 하겠습니다. 숫자 게임의 규칙은 다음과 같습니다. 먼저 모든 사원이 무작위로 자연수를 하나씩 부여받습니다. 각 사원은 딱 한 번씩..

알고리즘/파이썬 2018. 9. 16. 01:02