목록ALGORITHM/SOLVE (67)
정구리의 우주정복
testCase = int(input()) for i in range(testCase): string = input() stack = [] check = [] for j in string: if j == '{' or j == '(': #열린 괄호라면 input stack.append(j) elif len(stack) == 0 and j=='}' or len(stack) == 0 and j==')': #스택안에 아무것도 없는데 만났을때 check.append(0) #check 에 append 이후 break break elif len(stack)>0: if j == '}': if stack[-1] == '{': stack.pop(-1) else: check.append(0) break elif j == '..
#정답은 여러가지일 수 있음 ##파이썬으로 풀었다 ### 질문 댓글 ####문제는 따로 쓰지않음 피보나치 수란 ??? 0과 1로 시작을 해 0번째 피보나치 수는 0이고 1번쨰는 1이다 그 다음부터는 바로 앞의 두 피보나치 수의 합이 된다 0,1,2,3,5,8,13 . . . 이런식으로 증가해 나간다 2748- 피보나치 수 2 피보나치 수열 def dp(n): for i in range(2,n+1): arr.append(arr[i-1]+arr[i-2]) return(arr[n]) n=int(input()) arr=[0,1] print(dp(n)) 점화식은 arr[i] = arr[i-1]+arr[i-2] 가 된다 이때 단순재귀를 이용하면 함수 호출개수가 너무 많아지기 때문에 for문을 이용하자 1003- 피..
#파이썬 ##이문제는 아직 이해가 안돼서 질문 안받음 문제를 보자마자 ?? 해서 열심히 찾아봤더니 DP(동적계획법) 의 Hello World 와 같은 문제라고 한다 강의를 듣자마자 바로 풀수 있었을 문제는 아닌것같고 .. 아무튼 유투부 보면서 보고 써본수준 (풀었다고 하기도 민망) youtu.be/YHZiWaL49HY 이 영상 봤다 DP 나 DFS 를 풀기위해선 점화식이 필요하다 점화식이란 ? 규칙성 이라고 생각하면 될듯 그리고 보통 점화식은 제일 마지막 연산을 생각해보면 된다고 한다 이 문제의 규칙성은 이렇게 된다고 한다 (이걸 사람들은 어떻게 알았을까) 최종 소스는 이렇게 된다 def dp(n): if n == 1: #1인경우의 개수는 1개 return 1 elif n == 2: #2인 경우의 개수는..
#파이썬으로 품 ##질문 댓글 딕셔너리 이용해서 푸니까 쉬웠다 testCase = int(input()) for i in range(testCase): str1=str(input()) str2=str(input()) dict = {} for j in str1: #모든게 0 인 딕셔너리 생성 dict[j] = 0 for j in str2: if j in dict: dict[j] +=1 print('#'+str(i+1)+' '+str(max(dict.values())))
#파이썬으로 품 ##질문은 댓글 가로 세로를 받아와서 역순과 같은게 있는지 없는지 탐색했다 testCase = int(input()) for i in range(testCase): n,m = map(int,input().split(' ')) arr = [] for j in range(n): arr.append(list(input())) for j in range(n): for k in range(n-m+1): ga_arr = arr[j][k:k+m] #가로 se_arr = [arr[x][j] for x in range(k,(k+m))] if ga_arr == ga_arr[::-1] : hwe=ga_arr elif se_arr == se_arr[::-1]: hwe=se_arr print('#'+str(i+..
#파이썬으로 작성 ##질문은 댓글 브루트포스를 이용해서 풀었다 testCase = int(input()) def BruteForce(search,string): i = 0 #string 의 index j = 0 #search 의 index while i < n and j < m: if string[i] != search[j]: i = i-j j = -1 i = i+1 j = j+1 if j == m: return 1 else: return 0 for i in range(testCase): search = input() string = input() n =len(string) m = len(search) result = BruteForce(search,string) print('#'+str(i+1)+' '..
#파이썬으로 만듬 #질문 댓글로 선택정렬을 사용한 소스코드 testCase = int(input()) for i in range(testCase): length = int(input()) arr = list(map(int,input().split())) index = 0 for j in range(length): change = 0 index = 0 if len(arr[j:length])%2 ==0 : #최대값을 찾아야하는 경우 maxx = arr[j] for k in range(j,length): #최대값 구하기 if arr[k] >= maxx: maxx = arr[k] index = k elif len(arr[j:length])%2 != 0: #최소값 mini = arr[j] for k in rang..
#파이썬 ##질문 댓글 이진탐색을 할때마다 +1 씩 해줘서 풀었다 testCase = int(input()) for i in range(testCase): num = [int(x) for x in input().split(' ')] count = [] for j in range(2): l = 1 r = num[0] time = 0 page = num[j+1] while l middle: l = middle time += 1 count.append(time) if count[0] < count[1]: print('#'+str(i+1)+' A') elif count[0] == count[1]: print('#'+str(i+1)+' 0') else: print('#'+str(i+1)+' B') --------..