목록코딩 (5)
언젠가는

우선, 대각선으로만 뜯을 수 있다는 사실을 알 수 있다. 그런데, 연속해서 대각선으로 안뜯고 넘길 수도 있다. 그래서 두번 째 전의 것도 비교해서 더 큰 것을 더해가면 된다. 1. 처음 입력받는 것은 테스트 케이스 개수이다. 개수만 큼 for문을 돌려줄 것이다. a = int(input()) 2. b에는 2n개 스티커의 n이 들어간다. c=[0,0]를 미리 만들어서 리스트 맵으로 입력값을 받는다. for i in range(a): b = int(input()) c = [0,0] c[0] = list(map(int,input().split())) c[1] = list(map(int,input().split())) 3. 1부터 b-1만큼 돌 것이다. 인덱스는 0부터 시작하고, 우리는 이전의 값을 더해줄 것이..

동물원에 사자는 그래서 몇 마리 있는데요? 하고 물어보고 싶다. 우리만 놓고 몇 마리인지는 관계없이 생각해야 한다. 가로로도 같이 있으면 안되고, 세로로도 같이 있으면 안된다. n=1일 때, 왼, 오, 비어두기 세 가지가 있다. 왼=0, 오=1, 비어두기=2 라고 생각하고 풀 것이다. 이전 값이 0(왼)이면 다음 값은 0(왼)에 올 수 없다. 1(오)아니면 2(비어두기)만 올 수 있다. 이전 값이 1(오)일 경우에는 0(왼), 2(비어두기) 이전 값이 2(비어두기)라면 0(왼),1(오), 2(비어두기) 가능! 1. n을 입력받는다. n은 사자의 마리수가 아니라, 우리의 세로 갯수이다. a에 넣어준다. a = int(input()) b = [[0]*3 for i in range(a+1)] b에 세로 개수만..

우선, 문제를 이해하는 데 조금 오래 걸렸다. 1의 자리 수일 때는 0을 제외한 모든 수가 계단수가 된다고 가정해야 두번째 자리의 계단 수를 찾을 수 있게 된다. 그리고, 자리수가 늘어날 때마다 1의자리수가 가장 왼쪽부터 시작한다고 생각하면 된다. 2자리 수일 때 0 옆에 올 수 있는 것은 1로 하나다, 1 옆에는 0과 1, 2부터 계속 두개씩 나오다가 9일 때는 8만 올 수 있다. 3자리 수일 때도 마찬가지일 것이다. 그렇다면 dp배열에다가 1자리 수를 입력해 놓고, 자리 수가 늘어날 때마다 i-1, i+1일 때의 경우를 합쳐주면 된다는 사실을 알 수 있다. 다만 숫자가 0일 때와 9일 때는 각각 1일때, 8일때의 값만 계산해야 한다. 1. 자리 수를 a변수에 입력한다. a = int(input()) ..

1. a=list(input()) a에 입력값을 리스트로 받습니다. b = len(a) 리스트의 길이를 b로 받습니다. 2. for i in range(b): if ord(a[i])==32: a[i] = ' ' 띄어쓰기의 아스키 코드는 32, 32일 때 띄어쓰기를 넣어줍니다. elif a[i].isdigit(): 숫자가 나오면 변함없이 숫자가 나옵니다. a[i] = a[i] else: 띄어쓰기, 숫자가 아닐 경우에만 ROT13을 진행합니다. if a[i].isupper(): if (ord(a[i])+13)

괄호가 ()한번에 닫히면 레이저, 나중에 닫히면 막대의 끝부분임을 알 수 있고, 레이저는 현재의 막대기 개수만큼 자른다는 사실을 통해 정답을 구할 수 있습니다. 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합니다. 레이저는..