반응형

파이썬 28

파이썬 30. 예외 처리

이번 글에서는 예외 처리에 대해서 알아보도록 하겠습니다. 예외 처리 지금까지 파이썬에 대해 알아보면서, 또는 파이썬으로 프로그램을 만들면서 우리들은 많은 오류 메시지들을 봐왔습니다. 이런 오류들을 보는것은 프로그래머라면 매우 당연하고, 중요한 일일 것입니다. 그런데 어떤 때에는 의도적으로 이 오류에 대해서 특정한 작업을 수행하고 싶은 경우가 생기는데, 파이썬에선 이러한 예외 처리를 위해 try~except를 지원하고 있습니다. 일단 간단한 오류를 한 번 발생시켜봅시다. print(a) 간단하게 선언하지 않은 변수 a를 출력하도록 하여 오류를 발생시켜봤습니다. "그러면 NameError: name 'a' is not defined."라고 오류 메시지가 출력됩니다. 간단하게 a를 찾을 수 없다는 말이죠. 이..

파이썬 29. 패키지

이번 글에서는 패키지에 대해서 알아보도록 하겠습니다. 패키지 패키지는 저번 글에서 알아본 모듈을 도트(.)를 사용해 계층적으로 관리할 수 있게 해줍니다. 예를 들어 모듈명이 myPack.myMod라면, myPack이 패키지명, myMod은 myPack패키지의 모듈이 되는겁니다. 이렇게 용도에 따라 모듈을 분류해놓으면 유지 보수나 사용하기가 편할 것입니다. 그럼 바로 패키지를 만들어서 그곳에 모듈을 넣어보도록 합시다. 먼저, 현재 프로젝트의 루트 디렉터리로 가줍시다. 저는 pyCharm을 사용중인데, 이 경우 C:\users\사용자\PyCharmProject에 가시면 현재 pyCharm에서 생성한 프로젝트들이 모여있는 디렉터리로 이동할 수 있습니다. 다음으로 해당 디렉터리에 원하는 이름의 폴더를 하나 만들..

백준 1700. 멀티탭 스케줄링(파이썬)

자세한 문제 내용은 아래 링크로 가주세요. www.acmicpc.net/problem/1700 1700번: 멀티탭 스케줄링 기숙사에서 살고 있는 준규는 한 개의 멀티탭을 이용하고 있다. 준규는 키보드, 헤어드라이기, 핸드폰 충전기, 디지털 카메라 충전기 등 여러 개의 전기용품을 사용하면서 어쩔 수 없이 각종 전 www.acmicpc.net 접근 방법 일단 문제는 플러그를 빼는 횟수를 최소한으로 해서 그 회수를 출력하는 문제입니다. 자 그럼 차근차근 풀어나가 봅시다. from sys import stdin N, K = stdin.readline().split() N = int(N) K = int(K) multap = [0] * N li = list(map(int, stdin.readline().split(..

백준 2020.11.25

백준 1202번. 보석 도둑(파이썬)

자세한 문제 내용은 아래 링크로 가주세요. www.acmicpc.net/problem/1202 1202번: 보석 도둑 첫째 줄에 N과 K가 주어진다. (1 ≤ N, K ≤ 300,000) 다음 N개 줄에는 각 보석의 정보 Mi와 Vi가 주어진다. (0 ≤ Mi, Vi ≤ 1,000,000) 다음 K개 줄에는 가방에 담을 수 있는 최대 무게 Ci가 주어진다. (1 ≤ Ci www.acmicpc.net 접근 방법 답을 구하는 법 자체는 어렵지 않은데, 시간 초과 때문에 애먹었던 문제입니다. 보석의 무게와 가격 M, V가 있고, 가방에 담을 수 있는 최대 C가 있습니다. 그럼 M이 C이하인 것 중에 가장 V가 큰 원소를 구해서 더하면 되는 문제라고 생각해서 접근해봤습니다. N, K = stdin.readlin..

백준 2020.11.24

파이썬 28. 모듈

이번 글에서는 모듈에 대해서 알아보도록 하겠습니다. 모듈 모듈은 클래스, 함수, 변수 등을 저장해놓은 파일들을 말합니다. 우리는 이러한 모듈들을 불러와서 그 안에 있는 내용을 사용할 수 있는데, 파이썬에 이미 내장되어있는 모듈도 있고, 우리가 직접 모듈을 만들어서 나중에 사용할 수 도 있습니다. 예를 들어 사칙연산이라는 모듈을 만들어 그 안에 사칙연산을 하는 클래스, 함수를 만들어 저장한 뒤 해당 모듈을 다른 프로그램에서 불러들여 사칙연산을 수행할 수 있습니다. 그렇다면 이제 실제로 모듈을 만들어서 사용하는 법에 대해서 알아봅시다. 먼저, 프로젝트 폴더를 우클릭해서 원하는 이름의 .py파일을 하나 만듭니다. 전 myCal이라는 파일을 하나 생성해주겠습니다. 그리고 위와 같이 사칙연산과 mod연산을 수행하..

파이썬 27. 메서드 오버라이딩

이번 글에서는 메서드 오버라이딩과 연산자 오버로딩에 대해서 알아보도록 하겠습니다. 메서드 오버라이딩 메서드 오버라이딩의 경우 상속개념 중 꼭 알아야 하는 것 중 하나입니다. 오버라이딩의 사전적 의미는 "우선하다, 중단시키다"인데, 부모로부터 상속받은 메서드를 자식클래스에서 재정의할 때 이를 오버라이딩이라고 합니다. 여기서 말하는 재정의는 이름만 같고, 메서드의 내용은 변경시키는 것을 의미합니다. 저번 글에서 상속관계에서 동일한 이름을 가진 메서드의 우선수위에 대해 이야기했는데, 자식클래스가 가장 먼저라는 것이 바로 이 오버라이딩 때문입니다. 예를 들어 부모클래스에 fun1이라는 메서드가 있고, 자식클래스에서 다시 fun1이라는 메서드를 정의하면 자식클래스의 인스턴스에서 호출되는 것은 자식클래스의 fun1..

파이썬 26. 상속

이번 글에서는 클래스에 이어서 클래스 상속에 대해서 알아보도록 하겠습니다. 상속 상속은 객체지향 언어에서 매우 중요한 개념 중 하나인데요, 이 상속은 과연 뭘까요? 먼저 '상속'이라는 단어의 뜻을 생각해봅시다. 구글에 검색하면 '상속이란 사람의 사망에 의한 재산 및 신분상의 지위의 포괄적인 승계를 말한다.'라고 나옵니다. 간단하게 말하면 자신의 재산을 다른사람에게 물려주는 것을 이야기합니다. 객체지향 언어에서는 이 개념이 클래스 사이에서 적용될 수 있습니다. 특정한 한 클래스가 다른 클래스에게 자신이 가진 모든 변수와 메서드, 즉 클래스의 기능을 전해주는 것을 '상속'이라고 합니다. 중요한 점은 다른 클래스에게 상속을 해줘도 상속해준 본래 클래스도 계속해서 사용할 수 있다는 점입니다. 말로 설명하면 어려..

파이썬 25. 클래스-2

저번 글에 이어서 클래스에 대해서 알아보도록 하겠습니다. self 먼저, 저번 글에서 등장했지만 뒤로 미루어 둔 self라는 놈에 대해서 알아보겠습니다. class TV(): power = False def powerChange(self): self.power = not self.power t1 = TV() t2 = TV() print("t1의 전원 : {}, t2의 전원 : {}".format(t1.power, t2.power)) t1.powerChange() print("t1의 전원 : {}, t2의 전원 : {}".format(t1.power, t2.power)) 저번 글에서 위와 같은 클래스를 정의했었는데, powerChange라는 함수를 정의했을 때 매개변수로 self가 자동으로 들어가는 것을 ..

파이썬 24. 클래스-1

이번 글에서부터는 클래스라는 것에 대해서 알아보도록 합시다. 클래스 일단 클래스가 과연 무엇인지 알아보도록 합시다. 클래스는 많은 사람들이 흔히 '설계도'라고 표현하곤 하는데, 실제 코드를 통해서 클래스가 무엇인지 차근차근 알아봅시다. class TV(): class 클래스명(): 일단 클래스를 만드는 방법은 아주 간단한데, 위와 같이 class라는 예약어 뒤에 클래스명을 적어주시기만 하면 됩니다. 이러면 우리는 일단 TV라는 클래스를 하나 만든것입니다. 그럼 이제 곰곰히 생각해봅시다. 우리가 사용하는 TV에는 과연 무엇이 필요할까요? class TV(): power = False 일단은 이 TV가 켜져있는지 꺼져있는지 판단하기 위한 값이 필요할 것입니다. 또한 TV를 처음 만들면 당연히 전원은 꺼져있기..

파이썬 23. 파일 입출력

이번 글에서는 파이썬에서 파일을 읽고 파일에 쓰는 법에 대해서 알아보도록 하겠습니다. 파일 생성 먼저, 데이터를 파일에 저장하는 법부터 알아봅시다. 그러려면 먼저 파일에 입력할 데이터와, 데이터를 입력할 파일이 필요할 것입니다. 파이썬에서 파일을 생성하는 방법은 다음과 같습니다. f = open('newFile.txt', 'w') 파일 객체명 = open('파일경로', '모드') 먼저, 파일 객체명을 정해주시고 open이라는 함수를 사용합니다. open함수의 인수로는 파일명과 모드가 기본적으로 필요한데, 파일명은 실행할 파일의 경로를 적어줍니다. 이때 경로를 적지 않고 파일명만 입력하면, 기본적으로 프로젝트의 root폴더를 경로로 지정합니다. 모드의 경우 파일을 어떤 방식으로 실행할지 지정하는 부분인데,..

반응형