Loading...
2020. 2. 26. 01:47

[Python] BOJ 1316 - 그룹 단어 체커

https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다. 단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오. www.acmicpc.net 딱히 어려운 문제는 아니지만, 잡기술(?)하나를 설명하기 위해 정리를 해본다. import sys input = sys.stdin.readline n = int(input()) cnt = 0 def..

[Python] BOJ 1654 - 랜선 자르기(Binary Search)

https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 후 K줄에 걸쳐 이미 가지고 있는 각 랜선의 길이가 센티미터 단위의 정수로 입력된다. 랜선의 길이는 231-1보다 작거나 같은 자연수이다. www.acmicpc.net 이분 탐색문제이다(함정이 있는) import sys input = sys.stdin.readline N,M = map(int,input().split()) L = [] for _ in range(N): L.append(int(inp..

2020. 2. 18. 01:04

[Python] BOJ 2609 - 최대공약수와 최소공배수(유클리드 호제법)

https://www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를,둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net * 유클리드 호제법이란? - 즉, a,b의 최대공약수는 b,r의 최대공약수와 같다는 것이다. n,m = map(int,input().split()) def Eucliden(a, b): while(b != 0): r = a % b a = b b = r return a print(Eucliden(n,m)) print(n*m // (Eucliden(n,m))) - 따라서 b가 0이 아닌 동안 b를 a에 넣고 a를 b로 나눈 나머지를 b에 넣는 과정을 반복했다. - 9번째..

2020. 2. 18. 00:24

[Python] collections.deque

맨날 무엇이든지 대충대충 하는 습관이 들어서 그걸 고치기 위해 영어문서를 해석해보고 정리해본다. 문제풀이 할 때 가끔씩(?) 쓰는 collections 모듈이다. Source code는 https://github.com/python/cpython/blob/3.8/Lib/collections/__init__.py python/cpython The Python programming language. Contribute to python/cpython development by creating an account on GitHub. github.com 에서 확인할 수 있다. 여러 Object들이 존재하지만, 아직 사용해본 2개만 정리해보겠다. (나머지는 나중에 쓰는 날이 오면 그때 마다 정리하는 걸로..) *..

2020. 2. 12. 14:21

Python 시간복잡도, 코드시간측정

# 파이썬으로 여러문제를 풀다보면 시간초과가 나는 일이 많이 발생한다. (파이썬은 편리함과 효율성을 맞바꾼 언어라고 누가 그러더라..) 그래서 백준에서는 파이썬으로 채점할 때 (제한시간*3+2)초 이런식으로 시간을 늘려주기는 한다. 그렇지만 항상 코드를 짜면서 내장함수를 사용할때마다 '이 함수는 O(n)인가? O(1)인가?' 이런 고민들을 하게 된다. 1. https://wiki.python.org/moin/TimeComplexity TimeComplexity - Python Wiki This page documents the time-complexity (aka "Big O" or "Big Oh") of various operations in current CPython. Other Python imp..

[Python] BOJ 5430 - AC(deque)

https://www.acmicpc.net/problem/5430 5430번: AC 문제 선영이는 주말에 할 일이 없어서 새로운 언어 AC를 만들었다. AC는 정수 배열에 연산을 하기 위해 만든 언어이다. 이 언어에는 두 가지 함수 R(뒤집기)과 D(버리기)가 있다. 함수 R은 배열에 있는 숫자의 순서를 뒤집는 함수이고, D는 첫 번째 숫자를 버리는 함수이다. 배열이 비어있는데 D를 사용한 경우에는 에러가 발생한다. 함수는 조합해서 한 번에 사용할 수 있다. 예를 들어, "AB"는 A를 수행한 다음에 바로 이어서 B를 수행하는 함수이다. www.acmicpc.net import sys,collections input = sys.stdin.readline t = int(input()) for _ in ra..

[Python] BOJ 1966 - 프린터 큐(Queue)

https://www.acmicpc.net/problem/1966 1966번: 프린터 큐 문제 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 쌓여서 FIFO - First In First Out - 에 따라 인쇄가 되게 된다. 하지만 상근이는 새로운 프린터기 내부 소프트웨어를 개발하였는데, 이 프린터기는 다음과 같은 조건에 따라 인쇄를 하게 된다. 현재 Queue의 가장 앞에 있는 문서의 ‘중요도’를 www.acmicpc.net import sys input = sys.stdin.readline t = int(input()) for i in range(t): q..

[Python] BOJ 1158 - 요세푸스 문제(Circular Linked List)

https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 이중연결리스트 문제를 풀고 삘받아 원형연결리스트문제까지 도전해보았다. 이것도 역시 단순 수식으로 짧게 푸는 방법도 있지만, 원형 연결리스트로 풀어보았다. import sys input = sys.stdin.readline class CList: class Node: def __init__(self,item,link): self.item = item self.next = link def __init__(self): self.last = None self.size = 0 def insert(..