목록파이썬 (44)
Developer_Neo
큐(Queue) 먼저 집어 넣은 데이터가 먼저 나오는 FIFO(First In First Out)구조로 저장하는 형식 또는 반대로 LILO(Last-In, Last-Out) 방식 넣는 데이터가 같은 자료형이 아니어도 됨. 표를 사러 일렬로 늘어선 사람들로 이루어진 줄을 말하기도 하며, 먼저 줄을 선 사람이 먼저 나갈 수 있는 상황을 연상하면 된다. (출처) 스택과 꺼내는 순서가 반대 장단점 데이터 접근, 삽입, 삭제가 빠르다. 큐 역시 스택과 마찬가지로 중간에 위치한 데이터에 대한 접근이 불가능하다 큐(Queue)의 핵심 연산 Enqueue 큐에 데이터를 넣는 기능 반환 X Dequeue 큐에서 데이터를 꺼내는 기능 데이터 반환 다른 연산들 QueueInit 큐의 초기화를 진행한다. (큐 생성 후 제일 ..
https://www.acmicpc.net/problem/2439 2439번: 별 찍기 - 2 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오. www.acmicpc.net 문제 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오. 입력 첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다. 출력 첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다. 예제 입력 1 복사 5 예제 출력 1 복사 * ** *** **** ***** 생각 아 오른쪽 정렬해서 하면 되겠구나 그런데 정렬할때의 자릿수는 입력한것으로 하면 되겠다. 그러면..
https://www.acmicpc.net/problem/2753 2753번: 윤년 연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 예를 들어, 2012년은 4의 배수이면서 www.acmicpc.net 문제 연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 예를 들어, 2012년은 4의 배수이면서 100의 배수가 아니라서 윤년이다. 1900년은 100의 배수이고 400의 배수는 아니기 때문에 윤년이 아니다. 하지만, 2000년은 400의 배수이기 때문에 윤년이다. 입력 ..
네스티드 함수(Nested Function) - 중첩 함수로써 함수 안에 정의된 함수를 의미한다. 예로 살펴보자 def maker(m): def inner(n): return m*n return inner fl=maker(2) f1(7) # 14 위에서 inner함수가 네스티드 함수가 된다. 이게 왜 가능하냐? 파이썬의 함수는 객체이다 이렇기 때문에 다른함수를 호출할때 인자로도 전달이 가능하기 때문이다. 위의 코드에서 maker함수에서 m이 벗어나면 m은 사라지게 되는데 어떻게 inner함수가 알고선 계산을 올바르게 하는가? 클로저로 알아보자 클로저 위의 질문에 답변을 해보자면 정의한 inner함수가 변수 m의 값을 어딘가에 살짝 저장해두고 쓴다는 것이다. 따라서 안쪽에 위치한 네스티드 함수가 자신이 필..
[python] 연산자 오버로딩, 정보은닉과 , __dict__ [python] 연산자 오버로딩, 정보은닉과 , __dict__ 연산자 오버로딩 __add__(self, other) : + 연산자(A + B또는 A += B) __iadd__(self, other) : + 연산자(A += B) __sub__(self, other) : - 연산자(A - B, A -= B) __isub__(self, other) : - 연산자(A -= B) __.. devloper-dreaming.tistory.com 에서 보았듯이 정보은닉관점에서 객체가 갖는 값에 직접 접근하는 것은 오류의 확률을 높일 수 있으므로 메소드를 통해 접근하는 것이 안전하다고 했었다. 그래서 나온 메소드들은 getter와 setter인데 메소드 ..
연산자 오버로딩 __add__(self, other) : + 연산자(A + B또는 A += B) __iadd__(self, other) : + 연산자(A += B) __sub__(self, other) : - 연산자(A - B, A -= B) __isub__(self, other) : - 연산자(A -= B) __mul__(self, other) : * 연산자(A * B, A *= B) __truediv__(self, other) : / 연산자 __floordiv__(self, other) : // 연산자 __mod__(self, other) : % 연산자 __pow__(self, other) : ** 연산자(pow(A, B)) __and__(self, other) : and 연산자 __not__(sel..
https://www.acmicpc.net/problem/1152 1152번: 단어의 개수 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열 www.acmicpc.net 문제 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다. 입력 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다...
https://www.acmicpc.net/problem/10809 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net 문제 알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다. 출력 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 ..