본문 바로가기

전체 글400

올바른 괄호 첫번째 코드 check라는 변수를 이용하여 "("인 경우에는 1을 더하고 ")"인 경우에는 -1을 더한다.하지만 ")"로 시작하는 경우 -1로 시작하지만 고려하지 않으므로 check가 0미만인 경우에 False로 break 하도록 한다.최종적으로 check가 0이 되어야 열리거나 닫혀있는 괄호는 없는 것이다. def solution(s):     answer = True     check = 0          for i in s:         if i == "(":             check += 1         elif i == ")":             check -= 1                  if check             answer = False            .. 2024. 5. 24.
기능개발 첫번째 코드 먼저 필요한 날로 구성된 리스트를 만들어야 한다.이를 위해 (남은 날 // 속도)을 구한 후 나머지가 있는 경우 +1을 한다. 이제 값을 비교해가면서 현재 값보다 큰 값이 있지 않은 수를 순차적으로 더해간다.마지막 값이 빠지지 않도록 포함한 후 결과를 만든다. def solution(progresses, speeds):     answer = []     days = [0] * len(progresses)     count = 0     for i in range(len(progresses)):         progresses[i] = 100 - progresses[i]     for i in range(len(progresses)):         if (progresses[i] % sp.. 2024. 5. 23.
031 K번째 수 (미해결) 첫번째 코드 아이디어는 뭔가 느낌이 오는 듯 했으나 결과적으로 모르겠다!! 책의 코드를 참고하여 작성하고 답은 맞았지만 이해를 위해 추후에 설명과 코드를 다시 작성해보도록 하자 혹시 미해결이 없어지기 전에 뚝딱 푸신 대단해 엄청나 분들이 있다면....설명을 부탁드려ㄷ...될까요?ㅎㅎ; import sys input = sys.stdin.readline n = int(input()) k = int(input()) start = 1 end = k answer = 0 while start 2024. 5. 23.
032 동전 0 첫번째 코드 그리디 알고리즘에 대해서 배우고 처음 푼 문제이다! 그리디 알고리즘 자체는 어렵지 않고 코드를 짤때도 어려움이 없었다. 아이디어는 책을 참고했으나 책의 아이디어를 바탕으로 코드를 작성했는데 거의 똑같은 것을 보아 아주 잘 이해했구만! 근데 앞으로 아이디어를 만들어 내는 것이 관건일 것 같다..ㄷㄷ 먼저 sorting 되어 있는 동전 기준으로 가질 수 있는 가장 큰 동전을 가져와서 k에서 나눈 값의 몫만큼 count에 더해준다. 그리고 나머지를 k로 갱신하고 위와 같은 방법으로 계속 진행한다. n, k = map(int, input().split()) A = [] count = 0 for _ in range(n): A.append(int(input())) for i in range(n-1, -.. 2024. 5. 23.
완주하지 못한 선수 범위를 보고 리스트로 풀면 시간초과가 날 것 같았다.그렇기 때문에 가장 먼저 생각난 방법은 딕셔너리이다. 딕셔너리를 생성하여 이름과 숫자(1)로 표현한다.완주한 경우에 1을 뺸다.그러면 마지막에 1인 경우가 완주하지 못한 사람이다. def solution(participant, completion):          dict = {}          for person in participant:         if person in dict:             dict[person] += 1         else:             dict[person] = 1          for person in completion:         if person in dict:             .. 2024. 5. 22.
030 기타 레슨 첫번째 코드 이 문제의 경우는 정렬해서 중앙값을 찾아 다시 찾는 이진 탐색은 맞으나 총 합을 기준으로 생각하는 것이다! 예를 들어 블루레이가 3개 필요하다 할 때, 총 합의 중앙값으로 계산한 결과 블루레이가 4개이면, 중앙값 기준 시작 점을 오른쪽으로 옮기고 충 합의 중앙값으로 계산한 결과 블루레이가 2개이면, 중앙값 기준 끝 점을 왼쪽으로 옮기는 것이다. 읽고나면 그렇게 계산할 수 있구나~ 라고 생각이 들지만 사실 직접 풀 때 이런 아이디어를 낼 수 있을까? 가 걱정이다... 그리고 코드를 짤때도 어려움이 있어 책을 참고했다... import sys input = sys.stdin.readline n, m = map(int, input().split()) A = list(map(int, input()... 2024. 5. 21.
728x90