Python 23제] 깊이 우선 탐색을 활용한 막대자르기
출처 : 반크 독도 포스터 문제] 길이 8m의 막대를 3명이서 1m단위로 자를려고 할 때 몇 번이면 1m 막대가 될 수 있는지 프로그램을 작성하시오. (단, 하나의 막대는 한 사람만 자를 수 있다.) 8 -> 4, 4 로 자른다 1번 4, 4 -> 2, 2, 2, 2로 자른다 2번 2,2,2 -> 1,1,1,1,1,1로 자른다 3번 2 -> 1,1로 자른다 4번 그러므로 총 4번을 자르면 8m 막대가 1m막대로 만들수 있게 된다. 입력 예시1] 20, 3 출력 예시1] 8 입력 예시2] 100, 5 출력 예시2] 22 참고풀이] #x: 막대기 총수 #y: 막대기 자를 인원수 #n: 현재 자를 막대기 개수 def cutDef(x,y,n): if n>=x: #자를 막대기가 1m가 되면 작업을 끝낸다. ret..
2021. 10. 5.
Python 17제] 2021년 한국정보올림피아드 1차대회 초등부 2. 나누기
문제] N개의 정수 수열 A1, A2,..., AN이 주어진다. 수열을 각각이 연속된 네 부분으로 나누려고 한다. 단, 각 부분은 최소 하나의 수를 포함해야 한다. 또 각 부분의 합은 모두 같아야 한다. 즉 어떤 i, j, k(1≤i<j<k<N)에 대해서 [A1,...,Ai], [Ai+1,...,Aj], [Aj+1,...Ak], [Ak+1,...AN]으로 나눈다. 예를 들어 주어진 수열이 4, -1, 2, 1, -3, 1, 2, 2, 1, 3이라고 하자. 이 수열을 아래과 같이 나누면 각 부분의 합이 달라서 허용되는 형태가 아니다. [4, -1, 2], [1, -3, 1, 2], [2, 1], [3] 아래와 같이 나눈 경우 각 부분의 합이 모두 같다. [4, -1], [2, 1],[-3, 1, 2, 2,..
2021. 8. 19.
Python 14제] 조건에 맞는 리스트값을 출력하는 프로그램을 작성하시오.
문제] 비어있는 리스트에 0이 입력될 때까지 숫자를 무작위로 입력받아 추가한다. 그리고 인덱스와 기준 숫자를 입력하면, 인덱스가 리스트 범위를 벗어나면 "리스트의 범위를 벗어났습니다."를 출력하고 종료한다. 인덱스가 범위에 포함되면 리스트에서 0에서 입력받은 인덱스까지에 저장된 숫자들 중 기준 숫자보다 큰 숫자를 모두 출력하는 프로그램을 작성하시오. (단, 리스트에 저장되는 숫자는 2자리 자연수이고 중복될 수 있다.) [입력 예시1] 2 → 인덱스 11 → 기준 숫자 [출력 예시1] 무작위로 입력된 값] 11, 22, 33, 44, 55, 0 인덱스 0~2까지 중 기준숫자 11보다 큰 숫자] 33 [입력 예시2] -2 → 인덱스 5 → 기준 숫자 [출력 예시2] 무작위로 입력된 값] 99, 88, 88,..
2021. 8. 5.