본문 바로가기

프로그래밍

(187)
2. 파이썬 자료구조 튜플 튜플은 몇 가지를 제외하고는 리스트와 거의 비슷하다. 다른점은 아래와 같다. ● 리스트는 []으로 둘러싸지만 튜플은 ()으로 둘러싼다. ● 리스트는 그 값의 생성, 삭제, 수정이 가능하지만 튜플은 그 값을 바꿀 수 없다. 튜플의 예제는 다음과 같다. >>> a = () >>> a = (1, ) >>> a = (1, 2, 3) >>> a = 1, 2, 3 >>> a = ('a', 'b', ('ab', 'cd')) -인덱싱 >>> a = (1, 2, 3) >>> a[0] 1 >>> a[2] 3 -슬라이싱 >>> a = (1, 2, 3) >>> a[1:] (2, 3) -튜플 더하기 >>> a = (1, 2, 3) >>> b = (4, 5) >>> a + b (1, 2, 3, 4, 5) -튜플 곱하기 >>> a..
2.2 자료구조 큐(queue) - 원형 큐 원형 큐(Circle queue): 기존의 큐는 프론트 값이 계속 증가되면서 공간을 잡아먹는 문제가 있음, 원형큐는 연결리스트를이용하여 공간의 낭비 없이 큐를 구현한 것이다. 원형큐의 동작과정은 다음 그림과 같다. 원형 큐의 연산은 다음 표와 같다. 연산 설명 enQueue 큐에 데이터 삽입 deQueue 큐에 데이터 삭제 peek front 가르키는 데이터 확인 isEmpty 큐가 비어있는지 확인 isFull 큐가 꽉 차있는지 확인 다음은 파이썬을 이용한 원형큐 구현 소스코드이다. class CircleQueue: def __init__(self, size): self.data = [None] * size self.size = size self.count = self.rear = self.front =..
2.1 자료구조 큐(queue) - 선형 큐 큐(queue): 한쪽 방향으로 데이터가 삽입되고 반대 방향으로는 데이터가 삭제되는 구조. 큐는 가장 먼저 삽입된 데이터가 가장 먼저 삭제되므로 선입 선출(FIFO(First-in First-Out) 구조라고도 함. 1. 선형 큐(Linear Queue) 선형 큐는 가장 기본적인 큐로 선입 선출 구조를 가진다. 다음 그림은 선형 큐의 동작 과정이다. 큐는 위의 그림과 같이 동작을 한다. 다음 표는 큐의 연산이다. 연산 설명 enQueue 큐의 rear에 원소 삽입 deQueue 큐의 front에 원소 삭제 peek 큐의 front에 원소 확인 isEmpty 큐가 비어있는지 확인 파이썬으로 구현한 큐의 소스코드는 다음과 같다. class Queue: def __init__(self): self.data =..
1.파이썬 자료구조 리스트 리스트는 배열과 비슷한 개념이다. 파이썬에서 리스트는 다음과 같이 사용할 수 있다. a = [] a = list() a = [1, 2, 3, 4, 5] a = ['hi', 'hello'] a = [1, 2, 'hi', 'hello'] a = [1, 2, ['hi', 'hello'] 모두 리스트를 생성한 것이다. 1. 리스트 슬라이싱 다음은 슬라이싱의 예제 이다. >>> a = [1, 2, 3, 4, 5] >>> a[0:2] [1, 2] >>>b = a[:2] >>>c=[2:] >>>b [1, 2] >>>c [3, 4, 5] 2.리스트 인덱싱 다음은 인덱싱의 예제이다. >>> a = [1, 2, 3] >>> a[0] 1 >>> a[0] + a[2] 4 >>> a[-1]#a[-1]은 리스트 a의 마지막 요솟..
Python 백준 2292 벌집 문제- 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다. 입력- 첫째 줄에 N(1 ≤ N ≤ 1,000,000,000)이 주어진다. 출력- 입력으로 주어진 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나는지 출력한다. 해설- 위 그림을 보면 한 줄의 끝 숫자가 다음과 같은 식을 만족하는 것을 알 수 있다. 소스코드- num = int(input()..
Python 백준 1712 손익분기점 문제- 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 인건비 등 총 B만원의 가변 비용이 든다고 한다. 예를 들어 A=1,000, B=70이라고 하자. 이 경우 노트북을 한 대 생산하는 데는 총 1,070만원이 들며, 열 대 생산하는 데는 총 1,700만원이 든다. 노트북 가격이 C만원으로 책정되었다고 한다. 일반적으로 생산 대수를 늘려 가다 보면 어느 순간 총 수입(판매비용)이 총 비용(=고정비용+가변비용)보다 많아지게 된다. 최초로 총 수입이 총 비용보다 많아져 이익이 발생하는 지점을 손익분기점(BREAK-EVEN POINT)이라고 한다. A, B, C가 주어..
Python 백준 2941 크로아티아 알파벳 문제- 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다. dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다. 출력- 입력으로 주어진 단어가 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다. 해설- replace를 이용하여 문자열을 크로아티아 알파벳으로 변경된 숫자를 센다. 소스코드- croatia = ["c=", "c-", "dz=", "d-..
Python 백준 5622 다이얼 문제- 상근이의 할머니는 아래 그림과 같이 오래된 다이얼 전화기를 사용한다. 전화를 걸고 싶은 번호가 있다면, 숫자를 하나를 누른 다음에 금속 핀이 있는 곳 까지 시계방향으로 돌려야 한다. 숫자를 하나 누르면 다이얼이 처음 위치로 돌아가고, 다음 숫자를 누르려면 다이얼을 처음 위치에서 다시 돌려야 한다. 숫자 1을 걸려면 총 2초가 필요하다. 1보다 큰 수를 거는데 걸리는 시간은 이보다 더 걸리며, 한 칸 옆에 있는 숫자를 걸기 위해선 1초씩 더 걸린다. 상근이의 할머니는 전화 번호를 각 숫자에 해당하는 문자로 외운다. 즉, 어떤 단어를 걸 때, 각 알파벳에 해당하는 숫자를 걸면 된다. 예를 들어, UNUCIC는 868242와 같다. 할머니가 외운 단어가 주어졌을 때, 이 전화를 걸기 위해서 필요한 최소..