목록파이썬 (15)
언젠가는
괄호가 ()한번에 닫히면 레이저, 나중에 닫히면 막대의 끝부분임을 알 수 있고, 레이저는 현재의 막대기 개수만큼 자른다는 사실을 통해 정답을 구할 수 있습니다. 1. a = list(input()) a에 괄호들을 입력받습니다. 2. b= 0 ans=0 b에는 끝나지 않은 막대기 개수를 넣어줄 것입니다.'('의 갯수 '('는 나중에 ')'를 만나게 되면 끝나고, 한번에 만나면 레이저입니다. 3. for i in range(len(a)): if a[i]=='(': b+=1 인덱스로 '('인 친구들을 찾아서 b에 +해줍니다. else: ')'인 친구들을 만났는데, if a[i-1]=='(': b-=1 ans+=b 그 전의 값이 '('이면 레이저입니다. 레이저는 막대기에서 탈락이므로 b에서 -1합니다. 레이저는..
a, b = map(int,input().split()) a,b에 입력값 받기 c = [i for i in range(1,a+1)] c에 리스트 만들기 1부터 a까지 ans=[] ans에 출력값 넣기위함 n=0 초기값 0, b-1을 인덱스값으로 정해서 찾아주기 for i in range(a): n+=b-1 n+b-1을 해준 인덱스를 뽑아내고 있음 if n>=len(c): n=n%len(c) 리스트의 갯수보다 크면 못꺼냄, 그럴땐 인덱스값을 초기화 해주기 위해 모자란 만큼 나머지로 계산한다. (원형으로 둘러쌓여 있으므로, 인덱스 맨 뒤에서 다시 맨 앞으로 가기 때문) ans.append(str(c.pop(n))) 당첨된 값을 pop해서 ans에 넣어준다. str로 변환하는 것은 나중에 출력값을 로 해야하기..
import sys a = list(input()) 처음에 문자열을 입력받는 곳 리스트로 받아서 하나씩 이용할 것이다. b = int(input()) 에디터에서 사용하는 코드 갯수 c = [] 커서의 방향을 항상 맨 끝을 만들어 주기 위해서 사용할 리스트 for i in range(b): d = sys.stdin.readline().split() d에는 에디터의 명령어가 들어온다. split()는 P $에서 $를 집어넣기 위해서 나눠준다. if d[0]=='L' and a: c.append(a.pop()) 명령어가 L이고, a에 값이 존재하면 커서를 왼쪽으로 옮긴다. 맨 끝의 문자를 리스트 c에 보관한다. elif d[0]=='D' and c: a.append(c.pop()) 명령어가 D이고, c에 값이..
a = int(input()) a에 첫줄의 입력을 받습니다. for i in range(a): c = list(input()) list로 두번째 줄 이후의 값들을 리스트에 입력합니다. sum=0 sum을 이용해서 ()세트를 0으로 만들어 주기 위한 값입니다. for j in c: if j=='(': sum+=1 elif j==')': sum-=1 '('+')'의 합을 0으로 만들어 줍니다. if sum ')()()()()(' 의 sum은 0이 되기 때문입니다. if sum > 0: print('NO') elif sum==0: print('YES')
import sys a = int(sys.stdin.readline()) 좀 더 빠르게 입력값을 얻기 위해 넣습니다. s=[] push할 때 들어오는 값들을 s=[]에 넣습니다. op=[] push 일 때 '+'를, pop일 때 '-'를 넣습니다. count=1 문제에서 오름차순으로 들어간다고 했으므로, 처음 push되는 값은 1입니다. er=0 오류가 났을 때 식별자 역할을 해 줄 변수입니다. for i in range(a): b = int(sys.stdin.readline()) while count