풀이

A - 22222

abc394_a

문제 요약

문제 링크 : https://atcoder.jp/contests/abc394/tasks/abc394_a

단순히 주어지는 숫자 문자열에서 2의 개수만큼 다시 2를 출력하는 문제입니다.

문제 풀이

문제 내용을 그대로 잘 구현하면 됩니다.

코드

print('2' * input().count('2'))
s = input()
cnt = s.count('2')
print('2' * cnt)

문제 태그

원본 링크

B - cat

abc394_b

문제 요약

문제 링크 : https://atcoder.jp/contests/abc394/tasks/abc394_b

주어지는 문자열들에 대해서, 문자열 길이를 기준으로 정렬 하고 차례대로 붙여 출력하는 문제입니다.

문제 풀이

문제 내용을 그대로 잘 구현하면 됩니다.

코드

n = int(input())
l = [input() for _ in range(n)]
 
l.sort(key=lambda t : len(t))
 
for i in l:
	print(i,end="")

문제 태그

원본 링크

C - Debug

abc394_c

문제 요약

문제 링크 : https://atcoder.jp/contests/abc394/tasks/abc394_c

주어지는 문자열에서 WA 부분 문자열을 AC 라는 문자열로 계속해서 대체했을 때, 최종적으로 나타나는 문자열을 구하는 문제입니다.

예를 들어, WWA 라는 문자열이 있으면 WWAWAC → ACC 로 변합니다.

문제 풀이

문자가 변하는 양상을 확인해보면, W*X개+A*1개 의 형태를 갖춰야만 바뀐다는 걸 WA가 AC로 계속 바뀌게 됨을 알 수 있습니다. W의 개수를 세다가 A 문자가 등장하면 대체하는 식으로 처리하면 됩니다.

코드

s = input()
 
stk = []
 
for i in s:
	if len(stk) == 0 or i != 'A'
		stk.append(i)
		continue
		
	idx = len(stk) - 1
	cnt = 0
 
	while stk[idx] == 'W' and idx >= 0:
		idx -= 1
		cnt += 1
 
	cnt2 = cnt
	
	while cnt > 0:
		stk.pop()
		cnt -= 1
	
	stk.append('A')
	
	while cnt2 > 0:
		stk.append('C')
		cnt2 -= 1
 
print("".join(stk))

문제 태그

원본 링크

D - Colorful Bracket Sequence

abc394_d

문제 요약

문제 링크 : https://atcoder.jp/contests/abc394/tasks/abc394_d

전형적인 안정적인 괄호 문자열 문제입니다. 다만, 괄호의 종류가 (), <>, [] 로 다양합니다.

문제 풀이

안정적인 괄호 문자열 문제이기 때문에 스택으로 해결하면 됩니다. 다만, 괄호의 종류가 다양하다는 점을 고려하여 구현해야 합니다.

코드

s = input()
 
stk = []
for i in s:
	if len(stk) == 0 or i in "([<":
		stk.append(i)
	else:
		if stk[-1] == '<' and i == '>':
			stk.pop()
		elif stk[-1] == '(' and i == ')':
			stk.pop()
		elif stk[-1] == '[' and i == ']':
			stk.pop()
 
if len(stk) == 0:
	print("Yes")
else:
	print("No")

문제 태그

원본 링크

연관 페이지

참고 문헌 / 사이트