A - Oh Those Palindromes 100,000자리의 문자열이 주어질 때 문자들을 잘 조합하여 만든 문자열의 부분문자열의 팰린드롬의 개수가최대가 되게 하는 문자열을 구하는 문제이다.이는 문자열 내의 문자들을 정렬하여 출력하면 된다. 생각해보면 이 방법이 답이라는 것을 쉽게 유추할 수 있다. B - Labyrinth 시작점이 주어지고 왼쪽, 오른쪽으로 갈 수 있는 횟수가 정해져있을 때주어진 매트릭스에서 몇 개의 칸에 도달할 수 있는 지를 구하는 문제이다.queue 를 선언하여각각 { {y좌표, x좌표}, {왼쪽으로 갈 수 있는 횟수, 오른쪽으로 갈 수 있는 횟수} }를 담을 것이다.위아래로 움직이는 것은 상관이 없으므로 처음에 시작 할 때 시작점에서 시작하여 갈 수 있는 위, 아래 칸들을 큐에 ..
A - Palindromic Twist 문자열 s가 주어질 때 이 문자열의 모든 글자를 그 글자 알파벳의 다음 알파벳, 또는 이전 알파벳으로 바꾸어펠린드롬을 만들 수 있는 지 없는 지 판단하는 문제이다.간단한 구현 문제인데 실제 대회에선 많은 Hack이 나온 문제 중 하나였다.이는 a와 z같은 양 끝 알파벳은 각각 b, y로만 바뀔 수 있으며 서로 바뀌지는 않는다. (순환 형태가 아니다.)이에 대한 조건만 조심하면 쉽게 풀 수 있는 문제이다. B - Numbers on the Chessboard 정해진 규칙에 따라 n*n 체스보드를 채워나갈 때 x열 y행에 적혀있는 숫자는 무엇인지 출력하는 문제이다.n이 짝수일 때 홀수일 때, x + y가 짝수일 때 홀수일 때로 나누어 수식을 세워 계산하였다.예를 들어 ..
A - Single Wildcard Pattern Matching 최대 1개의 *(와일드카드)가 있는 문자열 s로 문자열 t를 표현할 수 있는 지를 묻는 문제이다.*의 인덱스 번호를 기준으로 앞, 뒤가 문자열 t 앞과 뒤에 있으면서도겹쳐서는 안되므로 t은 문자열의 길이는 s-1보다 작으면은 안된다.이 두 조건에 유의하며 코드를 작성하면 풀 수 있는 문제이다. B - Pair of Toys 1~N까지의 수 중 서로 다른 2개의 수를 골라 이들의 합이 K를 만족하는 경우의 수를 출력하는 문제이다.N이 K-1보다 같거나 클 경우 K/2가 가능하나 K가 6일 때 (3, 3)과 같은 경우를 제외해주어야 하므로K/2가 짝수 일 때는 1을 빼주어야 한다.이외의 경우에는 max(0, (N-K/2))로 일반화 할 수 있..
A - Death Note 한 페이지에 m개의 이름을 적을 수 있으며 매일 이름을 이어서 적을 때,하루마다 몇페이지를 넘기는 지를 구하는 문제이다.이전까지 이 페이지에 적었던 이름이 sum개, 이 날 적어야 하는 이름이 X개라면(sum + X) / m개의 페이지를 넘겨야 하며 마지막 페이지에는 (sum + X) % m개의 이름이 있다는 것을 알 수 있다.매번 sum값을 업데이트 해주며 (sum + X) / m값을 출력하면 풀 수 있는 문제이다. B - Segment Occurrences q개의 쿼리동안 문자열 s[l ... r]에 문자열 t가 몇 번 나타나는 지를 출력하는 문제이다.n, m이 10^3로 비교적 작기에 완전탐색으로 O(nm)에 문자열 s에서 t가 어느 인덱스부터 등장하는 지 찾아낼 수 있다..
A - Balloons 서로 packet을 나누어 가질 때 하나 이상의 packet을 가지며 packet에 들어있는 풍선의 수는 같지 않게 해야할 때어떤 packet의 인덱스를 가져갔는 지 출력하는 문제이다.N이 1일 때에는 무조건 한 명은 packet을 받지 못하니 불가능하고packet에 있는 풍선의 수들을 정렬한다면 가장 적은 수의 풍선이 든 packet은 N이 2일 때를 제외하고는나머지 packet들의 풍선을 더했을 때보다 무조건 적다는 것을 알 수 있다.그러므로 N이 1 또는 N이 2이며 두 packet에 들어있는 풍선의 개수가 같은 경우는 -1,아닌 경우에는 풍선이 가장 적은 packet을 제외한 packet의 인덱스 번호를 출력해주면 된다.인덱스 번호를 출력해야함을 조심하자 B - Cuttin..
A - Game Shopping 간단한 구현 문제로, 게임의 가격을 보면서 지갑에 있는 돈으로 게임을 살 수 있을 경우 지갑의 인덱스를 증가시킨다.이 때 지갑의 인덱스가 최대 인덱스만 넘어가지 않도록 처리해주면 풀 수 있는 문제이다. B - Minimum Ternary String 0과 1, 1과 2만 위치를 바꿀 수 있으며 이 때의 사전 순으로 가장 앞에 있는 문자열을 출력하는 문제로1은 무조건 바꿀 수 있다는 아이디어를 이용하여 1의 개수와 첫 2 뒤에 있는 0의 개수를 세어준 뒤,첫 2 뒤에 있는 0의 개수만큼의 '0' + 전체 문자열에서의 1의 개수만큼의 '1' + 남은 문자열을 출력해주면 되는 문제이다. C - Annoying Present 처음에 0으로 초기화된 n개의 칸으로 구성된 배열로 시..