본문 바로가기

전체글61

6987번 올림픽 이 문제는 완전 탐색 알고리즘을 이용한다. 문제풀이 2021. 8. 13.
6603번 로또 이 문제는 백트래킹을 이용한다. 문제풀이 예시와 같이 7 1 2 3 4 5 6 7 으로 n이 입력을 받았다면 n에 방문했는지 확인하기 위해 visit 배열을 생성한다. 현재 아무도 방문하지 않았기 때문에 0의 값들을 가진다. 그다음 lotto함수가 처음 실행되었을때 처음에는 모두 방문하지 않았기 때문에 if문을 실행하지 않고 입력을 실행한다. 먼저 7은 k이기 때문에 제외하고 1부터 입력이 되고 1은 방문을 안했기때문에 방문을 해서 1의 값을 입력 후에 다음 재귀로 넘어간다. 그다음 재귀에서 똑같이 방문을 하지 않았기 때문에 같은 행동을 진행하고 재귀로 넘어간다 첫번째 재귀는 아무도 방문되지 않았기때문에 1,2,3,4,5,6 이 입력되어 6개를 충족하기 때문에 경우의 수를 출력해준다. 이제 출력후에 리턴.. 2021. 8. 13.
2156번 포도주 시식 이 문제는 동적 프로그래밍을 이용한다. 문제풀이 이 문제에는 규칙이 있다. 포도주를 전부 마셔야하고, 연속적으로 3잔을 마시지 않아야한다. 따라서 i-1번째 포도주를 마시고 i번째 포도주를 마신 경우 i+1번째 포도주를 마실 수없다. 그렇다면 조건을 알 수 있다. 1. 이번 회차를 포도주를 마실 때, 이전 회차에서 포도주를 마신 경우 2. 이번 회차에 포도주를 마실 때, 이전 회차에서 포도주를 마시지 않은 경우 3. 전회차에서 2연속으로 마셔서 이번 회차에 포도주를 안마실 경우 를 따져봐야한다. 입력으로 6,10,13,9,8,1 이 들어올 경우 초기값을 먼저 더한다 초기값을 보자면 연속적으로 더한 값 16 하나 띄우고 더한 값 19 하나 넘기고 연속으로 더한 값 23 13을 기준으로 식을 보자 처음의 경.. 2021. 8. 13.
13335 트럭 그림의 진행방향이 큐와 같아서 큐를 사용해서 문제를 풀었다 다리를 지나는 트럭의 무게들이 다리의 하중보다 작다면 다리를 지나 올 수 있다. 트럭이 다 지나갈때 까지 반복하기 때문에 while 문을 사용해서 작성했음 import sys n, w, L = map(int, sys.stdin.readline().split()); t, wei = 0, 0 truck = (list(map(int, sys.stdin.readline().split()))) we = [0] * w while True: out = we.pop(0) wei -= out; t += 1 if truck: if wei + truck[0] 2021. 8. 6.
반응형