문제https://www.acmicpc.net/problem/9935 풀이문자열에서 폭발 문자열이 없어질때까지 반복해서 찾아 지워나간다면 이론적으로 풀리기야 하겠지만 시간이 초과된다. 스택을 이용하면 전체 문자열에서 폭발 문자열을 찾는데 소요되는 시간, 문자열에서 폭발문자열을 반복하며 도려내어 새로운 문자열을 만드는 시간을 단축하여 빠르게 해결이 가능하다. 문자열을 앞에서부터 한글자씩 끝까지 순회하며 스택에 push하면서 스택의 윗부분과 폭발 문자열이 일치한다면 폭발 문자열의 길이만큼 pop해주기만 하면 한번의 순회로 쉽게 해결이 가능하다. 정답 코드msg = input()bomb = list(input())answerStack = []for letter in msg: answerStack...
문제https://www.acmicpc.net/problem/1213 풀이팰린드롬 문자열을 구성하려면 문자중 단 하나만 홀수개 사용할 수 있으며 정 가운데 입력된다,이 외의 다른 문자들은 짝수개 존재해야 팰린드롬 문자열로 구성이 가능하다. 문자별 등장 횟수를 딕셔너리로 저장하고, 홀수번 등장하는 문자를 기록하고 알파벳 순서대로 정렬하여 짝수번 등장하는 문자의 절반을 출력, 홀수번 등장하는 문자 출력, 짝수번 등장하는 문자의 절반을 뒤집어 출력하여 회문을 완성한다.이때 홀수번 등장하는 문자가 1개를 초과하면 팰린드롬이 불가하므로 한수에게 사과를 전하자. 정답 코드from collections import defaultdicthansooEngName = input()alphaDict = default..
문제https://www.acmicpc.net/problem/17413 풀이조건이 약간 까다로운 단순 구현 문제다 0부터 인덱스를 증가해가며 문자열 끝까지 검사하되의 다음 인덱스까지 인덱스를 증가시키고 해당 범위를 정답 리스트에 추가하고공백이 나오면 인덱스를 1 증가하여 다음 인덱스를 가리키고 공백을 정답 리스트에 추가하고그 밖의 다른게 나오면 문자나 숫자이므로 문자열의 끝을 만나거나 문자나 숫자가 아닐때까지 인덱스를 증가시키고 해당 범위를 뒤집어 정답 리스트에 추가하고정답 리스트를 join해서 출력하면 된다. 파이썬에서 "문자열[::-1]"을 통해 문자열을 쉽게 뒤집을 수 있다.::로 모든 문자열을 -1 만큼의 증가폭을 가지고 출력하므로 뒤집힌다파이썬에서 문자인지 검사할땐 isalpha(), 숫자인..
문제https://www.acmicpc.net/problem/4659 풀이단순하게 주어진 조건을 검사하여 출력하면 된다. 로직은 다음과 같다단어의 판정 결과를 저장할 isAcceptable 변수를 False로 초기화한다.연속된 자음과 모음을 세는 카운터 변수를 만들고 0으로 초기화한다 단어를 글쇠별로 하나씩 끝까지 검사하는데글쇠가 모음에 해당되면 모음 카운터를 증가시키며 자음 카운터를 0으로 초기화 하고, 글쇠가 자음에 해당되면 자음 카운터를 증가시키고 모음 카운터를 0으로 초기화 시킨다.모음은 최소 한개 이상 존재해야 하기 때문에 모음 카운터를 증가할땐 isAcceptable에 True를 저장한다.카운터가 3 이상이거나 e,o가 아닌 문자가 연속으로 2회 등장시 isAcceptable를 False..
문제https://www.acmicpc.net/problem/11279 풀이제목 그대로 최대 힙 자료구조를 사용하는 문제이다.최대 힙은 부모 노드가 자식 노드보다 큰 값을 가지는 완전 이진 트리로 구현된 자료구조이고따라서 최대힙의 Root 노드에는 항상 전체 트리의 최대값이 저장된다. 파이썬은 편리하게도 heapq 모듈을 import하면 최소 힙 자료구조를 사용할 수 있지만, 애석하게도 최대 힙은 구현이 되어있지 않은데, 모든 값에 -를 붙여서 뒤집으면 최소힙을 최대 힙처럼 사용이 가능하다.(마이너스를 붙여서 야매로 뒤집는건 최대 힙 말고도 내림차순 정렬 할때도 유용하다.) heap 모듈은 힙으로 사용할 빈 리스트를 선언하고 heapq.heappush(리스트, 값)으로 값을 push하고heapq.he..
문제https://www.acmicpc.net/problem/1927 풀이제목 그대로 최소 힙 자료구조를 사용하는 문제이다.최소 힙은 부모 노드가 자식 노드보다 작은 값을 가지는 완전 이진 트리로 구현된 자료구조이고따라서 최소힙의 Root 노드에는 항상 전체 트리의 최솟값이 저장된다. 파이썬은 편리하게도 heapq 모듈을 import하면 최소 힙 자료구조를 사용할 수 있다. 힙으로 사용할 빈 리스트를 선언하고 heapq.heappush(리스트, 값)으로 값을 push하고heapq.heappop(리스트)로 Root노드의 최소 값을 pop하다. 간단하다. heapq 모듈은 최대 힙의 구현은 없지만 최소 힙을 이용해 최대 힙도 구현할 수 있다. 정답 코드import heapqimport sysinpu..