목록2024/03/05 (2)
연습장
문자열 s 가 ( 로 시작하여 ) 로 끝나야 한다는 뜻이다. 그렇다고 ( )) ( 가 올바르다는것도 아니다. 바로 생각나는 방법은 올바른 문자열 s 의 괄호중 맨 안쪽 괄호는 결국 () 인 문자가 나오게되며 해당 괄호를 제거하더라도 다시 () 괄호가 계속해서 1개 이상 존재하고 마지막엔 "" 으로 남게 될것으로 예상된다. 즉 반복문을 사용하여 () 를 -> "" 으로 바꾸어서 계속해서 줄여나가면 해결할수있을꺼같다. def solution(s): # () 가 있으면 지우기 while "()" in s: s = s.replace("()","") # 판단 if len(s) > 0 : return False return True 결과는 시간초과가 났다. () in s 가 문제인걸까 while 의 반복 횟수가 문..
2개의 배열 A = [ ] , B = [ ] 에서 각각 1개씩 숫자를 뽑아 곱한 값들을 모두 더했을때 최소가 되는 값을 return 하는 문제 ex . 예시 A = [1,2,3,4,5] B = [1,2,3,4,5] 꺼내는 방법은 여러개가 있지만 둘다 서로 작은걸 꺼낼 경우 1*1 + 2*2+ 3*3 + 4*4 + 5*5 == 55 가 되며 하나는 큰것 하나는 작은걸 꺼낼 경우 1*5 + 2*4 + 3*3 + 4*2 + 5*1 == 35 이 되며 무작위로 꺼낸다고 가정하면 1*4+2*5+3*2+4*1+5*3 == 39 2번째 방법이 최소값이 될것으로 예상이 된다. 입력받은 배열은 중복도 있고 정렬이 되어있지 않다는것을 고려하여 문제를 풀면 다음과 같다. def solution(A,B): answer = 0..