2022-12-24 21:00 ~ 22:40 엣코더 대회에 참여했습니다.
이번에는 처음으로 D 번까지 풀었습니다. A,B,C,D 까지 문제만 잘 읽으면 이번대회는 쉬웠던거 같습니다.
E 번도 시도해봤지만 정말 어려웠던거 같습니다. 대회끝내고 에디토리얼을 봤는데 3차원 로 푸는거 보고 식겁해서 이번에는 A,B,C,D 번 코드 리뷰를 하겠습니다.
간단합니다. , 가 주어졌을때 를 구하는 문제입니다.
a,b=map(int,input().split())
print(a**b)
간단합니다. 리스트가 주어졌을때 개의 쿼리를 수행하면됩니다.
예제 입력을 보시면 바로 이해가 될껍니다.
먼저 을 입력받습니다. 이때 은 리스트의 길이입니다.
이후 리스트를 입력받고 를 입력받습니다. 이는 쿼리의 개수입니다.
만약 쿼리의 첫번째 값이 일때는 두번째 값이 일때 리스트의 인덱스 의 값 , 를 출력합니다. 이때 쿼리에서 인덱스는 1부터 시작하기 때문에 을 출력해야합니다.
두번째로 쿼리의 첫번째 값이 일때는 두 정수가 나옵니다.
이는 두번째 값의 인덱스를 세번째 값으로 바꾸라는 소리입니다.
예를 들어 1 3 0
일때 의 값을 0 으로 바꾸라는 뜻입니다.
import sys
input=sys.stdin.readline
N=int(input())
L=list(map(int,input().split()))
Q=int(input())
for i in range(Q):
P=list(map(int,input().split()))
if P[0]==2:
print(L[P[1]-1])
else:
L[P[1]-1]=P[2]
이 문제도 지문을 꼼꼼하게 읽으면 쉽습니다.
현재 사용 가능한 문자열은 다음과 같습니다.
만약 입력이 일때 , , , 를 붙이면 4번만에 만들 수 있습니다.
최소값을 구하는 문제이기 때문에 최대한 을 많이 써야하므로
가능한 의 값을 모두 구하고 나머지는 문자열의 길이를 더해줘서 해를 구했습니다.
S=input()
sum=0
sum+=S.count("00")
S=S.replace("00","")
sum+=len(S)
print(sum)
어려워보이지만 문제만 잘 읽으면 간단하게 풀리는 문제입니다.
먼저 문자열 가 주어집니다. 그리고 총 3개의 경우가 주어집니다.
따라서 이 문제는 의 시간복잡도로 해결가능합니다.
그냥 구현해주면되는데 박스에 문자가 있는지 체크를 하기위해서 을 사용했습니다.
을 사용하면 if a in b
의 시작복잡도가 최소 의 시간복잡도를 갖기 떄문입니다.
from collections import deque
S=deque(list(input()))
Box=set()
while S:
check=S.popleft()
if check=="(":
pass
elif check==")":
Box=set()
else:
if check in Box:
print("No")
exit(0)
else:
Box.add(check)
print("Yes")
이번에도 깔끔하게 A~D 까지 AC 를 받았습니다. 기분이 좋네요
E번을 못푼게 조금많이 아쉬웠지만 그만큼 어려운 문제인거같습니다.
최대한 빨리 브라운을 찍어보도록 노력하겠습니다.