T = int(input()) for tc in range(1,1+T): words = list(input()) temp = [words[0]] #일단 첫번째 문자를 받아서 temp리스트에 넣어준다 cnt = 1 #cnt는 문자를 몇개 넣었는지 temp안에 있는 개수 for i in range(1, len(words)): #인덱스 1부터 끝까지 돌면서 비교 if temp == words[i:i+cnt]: break temp.append(words[i]) cnt += 1 # print(temp) print('#{} {}'.format(tc, len(temp)))
1.열에 있는 숫자들을 받아서 거꾸로 해준다. 여기서 reverse() 내장 함수가 사용된다. 2. 그 값을 새로운 행렬의 행에 넣어준다. def func(num): new_num = [] for j in range(N): #열 중심 temp = [] for i in range(N): temp.append(num[i][j]) #temp로 한 열을 다 넣어주고 temp.reverse() new_num.append(temp) #거꾸로한것을 행으로 넣어주다 return new_num T = int(input()) for tc in range(1,T+1): N = int(input()) num = [] # 2차원 배열 받기 for i in range(N): num.append(list(map(int,input(..
백트레킹알고리즘: 해를 찾는 도중에 해가 아니면 되돌아가서 다시 해를 찾는 기법. 깊이우선 탐색과의 차이: 가지말아야할 곳 가지치기를 하면서 시도 횟수를 줄임. 조기에 차단 분할 정복 알고리즘: 분할/정복/통합 분할: 문제를 작은 부분으로 분할함. 정복: 분할한 문제를 각각 해결. 통합: 해결된 해답을 모은다. 분할 정복 알고리즘을 이용하여 퀵정렬에 사용할 수 있다. 퀵정렬: 주어진 배열을 두개로 분할하고, 각각을 정렬한다. 퀵정렬과 합병정렬과의 차이점: 1. 합병정렬은 그냥 두부분으로 나누고 통합을 해야한다. 2.퀵정렬은 pivot(기준아이템)을 중심으로 작은것은 왼편, 큰것은 오른편에 배치시킨다.
T = int(input()) for tc in range(1, T+1): N = int(input()) str_input = list(map(str,input().split())) str1 = [] str2 = [] half = int(N /2 - 0.2) #N개가 짝수개이면 half중간보다 하나 전까지 str1에 저장해주고 #홀수개 이면 중간값까지 str1에 넣어준다 for i in range(N): if i half and i < N: #3 4 str2.append(str_input[i]) result = [] for i in range(N): if i%2 == 0: result.append(str1.pop(0)) elif i%2 == 1: result.append(str2.pop(0)) print..
def stack_pop(words): for i in range(len(words)-1): if words[i] == words[i+1]: j = i for j in range(j,j+2): #연속된 두개 삭제 words.pop(i) return stack_pop(words) #재귀 return len(words) T = int(input()) for tc in range(1, T+1): words = list(input()) stack_pop(words) print("#{} {}".format(tc,stack_pop(words)))
T = int(input()) for tc in range(1, T+1): arr = input() N =len(arr) stack1 = [] result = 1 left = 0 right = 0 #왼쪽괄호들을 다 스택에 저장하고 오른쪽 괄호를 만난다면 pop해서 비교 for i in range(N): if arr[i] == '(' or arr[i] == '{': stack1.append(arr[i]) left += 1 if arr[i] == ')': right += 1 if len(stack1) > 0 and stack1.pop() != '(': result = 0 break elif arr[i] == '}': right += 1 if len(stack1) > 0 and stack1.pop() != '..
1. 왼쪽 괄호들은 스택에 저장한다 2. 오른쪽 괄호들을 만난다면 스택에 저장된 것을 맨뒤에서 하나씩 pop()하면서 검사해준다. 3. 짝이 맞으면 1 아니면 0 T = 10 for tc in range(1, T+1): N = int(input()) arr = input() stack1 = [] result = 1 #왼쪽괄호들을 다 스택에 저장하고 오른쪽 괄호를 만난다면 pop해서 비교 for i in range(N): if arr[i] == '(' or arr[i] == '{' or arr[i] == '[' or arr[i] == '': if len(stack1) > 0 and stack1.pop() != '
T = int(input()) for tc in range(1, T+1): N = int(input()) num = [] for i in range(1,N+1): num.append([1]*i) #처음에 1로 다 채워주기 for i in range(0, N): if i >= 2: #행이 i인덱스 2이상일 때만 돌아간다 for j in range(1, len(num[i])-1): #맨 처음이랑 맨 마지막 범위를 제외하고 num[i][j] = num[i-1][j] + num[i-1][j-1] #자기 자신보다 위에 인덱스 값 + 왼위 인덱스 값 print("#{}".format(tc)) for i in range(N): print(*num[i])
T = int(input()) for tc in range(1, T+1): str1 = list(map(int,input())) N = len(str1) str2 = [0]*N #0으로 채워진 리스트를 한개 만들어줌 # print(str1) # print(str2) cnt = 0 for i in range(N): if str2[i] == str1[i]: continue elif str2[i] != str1[i]: #같지 않다면 str1의 인덱스 i번째 값으로 끝까지 채운다 cnt += 1 j = i for j in range(N): str2[j] = str1[i] #print(str2) print("#{} {}".format(tc,cnt))
- Total
- Today
- Yesterday
- splide
- DOM
- 자바
- AWS
- 안드로이드스튜디오
- 알고리즘
- django
- javascript
- 독학
- 싸피
- Python
- 트리
- 위클리챌린지2주차
- 배포
- SSAFY
- Java
- vue.js
- SSAFY퇴소
- Pyhton
- 파이썬
- N과M
- 비동기패턴
- SWEA
- SQL
- 백준
- git
- 세션 스토리지
- vue
- 프로그래머스
- commit되돌리기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |