백준
-
백준 1463번 : 1로 만들기(Python, 파이썬)카테고리 없음 2019. 3. 13. 19:21
https://www.acmicpc.net/problem/1463 언뜻 보면 단순한 문제로 보인다. 그냥 1, 2, 3번을 구현해서 적용하면 되는 것처럼 보인다. 그러나 그렇지 않다. 연산을 사용하는 횟수의 최솟값을 출력하라는 뜻은 연산을 최고의 효율로 진행하라는 뜻. 1로 만들기위해 쓸데없는 연산을 진행해선 안된다. 경우의 수를 담을 리스트를 만들었다. 그다음 정수 X에 대한 세 가지 연산에 따른 경우의 수를 리스트에 저장했다. 그리고 경우의 수에 따른 값들에 다시 세 가지 연산을 적용하면 경우의 수 아홉 가지가 나올 것이다. 이를 리스트에 저장한다. 그리고 이를 반복하다가 1로 만드는 순간 연산의 최솟값을 출력하면 된다. 123456789101112131415161718192021222324X = i..
-
백준 11718,11719번 : 그대로 출력하기 1,2 (Python, 파이썬)카테고리 없음 2019. 3. 5. 18:40
https://www.acmicpc.net/problem/11718https://www.acmicpc.net/problem/11719 파이썬의 특성을 이용하면 쉽다. 파이썬은 입력을 그대로 출력을 받아주는 함수 print()를 제공하기 때문이다.while 반복문 아래 try , except 예외 처리 구문으로일단 입력을 받아 출력해보고(try) 예외가 발생(EOFError)하면 프로그램이 멈추는 구조로 작성한다. *EOFrror : 읽어들일 데이터가 더 이상 없을 때 발생하는 에러11718번, 11719번 문제는 다음과 같은 코드로 둘 다 해결 가능하다. 123456while True: try: print('''%s''' % input()) except EOFError: break Colored by C..
-
백준 1966번 : 프린터 큐 (Python, 파이썬) - 자료구조 큐(Deque)카테고리 없음 2019. 1. 14. 23:19
https://www.acmicpc.net/problem/196612345678910111213141516171819202122T = int(input())for _ in range(T): NM = list(map(int,input().split(' '))) N = NM[0] M = NM[1] imp = list(map(int,input().split(' '))) judge = [0 for _ in range(N)] judge[M] = 'T' cnt = 0 if len(imp) == N: while True: if imp[0] == max(imp): cnt += 1 if judge[0] == 'T': print(cnt) break else: imp.pop(0) judge.pop(0) else: imp.a..
-
백준 10866번 : 덱 (Python, 파이썬) - 자료구조 덱(Deque)카테고리 없음 2019. 1. 14. 23:17
https://www.acmicpc.net/problem/10866 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455class deque: def __init__(self): self.items = [] def push_front(self,x): self.items.insert(0,x) def pop_front(self): if len(self.items) == 0: return -1 else: return self.items.pop(0) def push_back(self,x): self.items.append(x) def pop_back(self): if len(self...
-
백준 10845번 : 큐 (Python, 파이썬) - 자료구조 큐(Queue)카테고리 없음 2019. 1. 7. 21:10
https://www.acmicpc.net/problem/10845 큐(Queue)의 개념은 쉽다. 표를 사기 위해 줄을 선 사람들을 생각해보자. 먼저 줄 선 사람이 먼저 표를 산다. 늦게 줄 선 사람은 당연히 늦게 표를 산다. 먼저 입력된 명령, 데이터가 먼저 처리된다. 늦게 입력되었다면 늦게 처리될 수밖에 없다.이러한 개념을 염두에 두고 코드를 짰다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556class Queue: def __init__(self): self.Queue_item = [] def push(self, x): self.Queue_item.append..
-
백준 2775번 : 부녀회장이 될 테야 (Python, 파이썬)카테고리 없음 2019. 1. 6. 21:22
https://www.acmicpc.net/problem/2775 'a 층의 b 호에 살려면 자신의 아래(a-1) 층의 1호부터 b 호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다'라는 규칙을 예를 들어 설명하도록 하겠다.예를 들어 3층 3호에 살고자 한다. 3층 3호에 살려고 한다면 2층 1호, 2층 2호, 2층 3호에 사는 사람들의 합만큼 3층 3호에 데리고 살아야 한다.그럼 3층 2호를 산다고 하면 어떨까? 2층 1호, 2층 2호에 사는 사람들의 합만큼 데리고 살아야 한다. 그렇다면 3층 3호에 데리고 살아야 하는 인원은 3층 2호에 데리고 살아야 하는 인원 + 2층 3호에 데리고 살아야 하는 인원이 된다.이러한 개념을 머릿속에 가지고 코드를 작성했다.123456789T = int(inp..
-
백준 10828번 : 스택 (Python, 파이썬) - 자료구조 스택(Stack)카테고리 없음 2019. 1. 3. 01:04
https://www.acmicpc.net/problem/10828자료구조 중 스택(Stack) 개념을 다루고 싶어 이번 문제를 선정해서 풀어보았다. stack의 사전적 의미가 '쌓다', '더미' 인 것처럼, 자료구조로서의 스택 또한 의미가 비슷하다. 자료를 차례대로 쌓아 자료의 더미를 이룬다. 더미에서 자료를 제거할 때에는 임의로 제거하는 것이 아니라 쌓은 순서의 역순으로 제거한다.예를 들어, 한 박스에 박스 입구 면적에 딱 맞는 벽돌들을 차례대로 담는 경우, 모든 벽돌을 다시 꺼내는 방법은 벽돌을 담은 순서의 역순으로 꺼내는 수밖에 없다.이런 스택의 개념을 참고해서 코드를 짜보았다.123456789101112131415161718192021222324252627282930313233343536cl..
-
백준 1316번 : 그룹 단어 체커 (Python, 파이썬)카테고리 없음 2019. 1. 1. 01:59
그룹 단어라는 개념 자체에 집중하면 된다. 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나야 한다. 한 문자가 일단 존재하면 그 단어는 하나 밖에 존재하지 않거나 존재하더라도 연속해야 한다. 절대 다른 단어로 인해 연결이 결딴나면 안 된다. 그렇담 결국, 절단이 나있느냐 안 나있느냐에 따라 그룹 단어의 여부를 결정할 수 있다. 그룹 단어가 절단 나있는가의 여부는 이중 for 문을 사용해 한 문자와 바로 옆에 인접한 문자를 비교함으로써 확인할 수 있다.코드는 이렇다.12345678910111213141516def check(voca): for i in range(len(voca)): judge = ['F','F'] for j in range(i+1,len(voca)): if voca[i..