목록Algorithm/Baekjoon (17)
꿈꾸는 개발자의 블로그
문제 링크 https://www.acmicpc.net/problem/20437 20437번: 문자열 게임 2 첫 번째 문자열에서 3번에서 구한 문자열은 aqua, 4번에서 구한 문자열은 raquator이다. 두 번째 문자열에서는 어떤 문자가 5개 포함된 문자열을 찾을 수 없으므로 -1을 출력한다. www.acmicpc.net 문제 풀이 주어진 문자열에서 k개 이상 문자를 포함하는 문자의 위치를 뽑아 list 형태로 dictionary에 넣어준다. 1번 결과로 나온 dictionary의 list를 시작 인덱스부터 k개까지 범위를 잡을 수 있는 만큼 순회한다. 해당 범위의 마지막 인덱스에서 처음 인덱스까지의 차를 저장하여 min, max값을 도출한다. 전체 코드 from collections import d..
문제 링크 https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 문제 풀이 문자열의 문자가 다음 문자와 연속되는지 확인한다. 만약 연속되지 않는데, 이후 문자열에 해당 문자가 있다면 그룹 단어가 아니다. 전체 코드 num = int(input()) result = num for i in range(num) : word = list(input()) for s in range(len(word)-1) : if word[s]..
문제 링크 https://www.acmicpc.net/problem/17413 17413번: 단어 뒤집기 2 문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('')로만 이루어져 www.acmicpc.net 문제 풀이 '' 또는 '알파벳 소문자/숫자/공백'으로 이루어진 문자열을 찾아 words 변수에 담는다. (re.compile을 사용하여 정규 표현식을 컴파일) words를 순회하며 조건에 따라 result 변수에 이어 붙인다. 만약 '
문제 링크 https://www.acmicpc.net/problem/21920 21920번: 서로소 평균 첫 번째 줄에 입력될 수들의 개수 $N$이 주어진다. $(2 \le N \le 500,000)$ 두 번째 줄에는 수열 $A$를 이루는 자연수 $A_{i}$ 가 공백으로 구분되어 주어진다. $(2 \le A_{i} \le 1,000,000)$ 수열 $A$에 $X$와 서로 www.acmicpc.net 문제 풀이 처음에는 각 수마다 약수를 구해서 서로소(1 이외의 공약수가 없음)인지 비교하여 풀이하려고 했다. 하지만 계속해서 시간초과 ㅠㅠ 결국 파이썬의 math.gcd()를 사용하여 코드를 완성했다... 아래 더보기는 직접 약수를 구해주는 함수를 구현하여 이용한 코드(다른 블로그 도움..)인데, 시간이 더..
문제 링크 https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 문제 풀이 처음에는 상근이가 가지고 있는 숫자 카드 리스트의 개수를 count 함수를 사용하여 구하려 하였지만, 시간 초과가 발생했다. 그래서 알게된 것이 Counter 모듈이다. 또 다른 풀이 방법으로 Dictionary를 사용하여 개수를 카운트 해주었다. 1. Counter 2. Dictionary 전체 코드 1. Counter 사용 from col..