* 백준 6603 로또
https://www.acmicpc.net/problem/6603
6603호: 로또
입력은 여러 테스트 케이스로 구성됩니다.
각 테스트 케이스는 한 줄로 구성됩니다.
첫 번째 숫자는 k(6 < k < 13)이고 다음 k 숫자는 집합 S에 포함된 숫자입니다.
S의 요소는 오름차순입니다.
www.acmicpc.net
from itertools import combinations
while True:
slist = list(map(int,input().split()))
if slist(0)==0:break
for out in combinations(slist(1:),6):
print(*out, sep=' ')
print()
* 백준 1182 서브시퀀스의 합
https://www.acmicpc.net/problem/1182
6603호: 로또
입력은 여러 테스트 케이스로 구성됩니다.
각 테스트 케이스는 한 줄로 구성됩니다.
첫 번째 숫자는 k(6 < k < 13)이고 다음 k 숫자는 집합 S에 포함된 숫자입니다.
S의 요소는 오름차순입니다.
www.acmicpc.net
from itertools import combinations
n,s = map(int,input().split())
slist = list(map(int,input().split()))
answer = 0
for i in range(1,n+1):
for j in combinations(slist,i):
if sum(j)==s : answer+=1
print(answer)
* 백준 5430AC
https://www.acmicpc.net/problem/5430
5430호: AC
각 테스트 케이스에 대해 함수 실행 결과는 입력으로 주어진 정수 배열에 출력됩니다.
오류가 발생하면 오류가 발행됩니다.
www.acmicpc.net
def R(arr):
arr.reverse(); return arr
def D(arr):
try: arr.pop(0); return arr
except IndexError: return ()
def main():
p=input().strip() #명령어
n=int(input()) #주어진리스트 길이
arr=(int(ii) for ii in map(str,input()(1:-1).split(',')) if ii.isdigit())
for i in p:
if i=='R': arr=R(arr)
elif i=='D':
if len(arr)>1 : arr=D(arr)
else : return print('error')
else: pass
return print(arr)
if __name__=="__main__":
t=int(input())
for i in range
- 오류 분석 및 계획: readline 시도, eval 빼기 => 없음.
## (시간초과) 실패
def main():
p=input().strip() #명령어
n=int(input()) #주어진리스트 길이
arr=(int(ii) for ii in map(str,input()(1:-1).split(',')) if ii.isdigit())
r=0 #reverse 횟수
for i in p:
if i=='R': r+=1
elif i=='D':
if len(arr)!
=0 :
if r%2==0:
arr=arr(1:) # reverse 짝수(맨앞제거)
r=0
else:
arr.pop(-1) # reverse 홀수(맨뒤제거)
else :
return print('error')
else: pass
if r%2!
=0 : arr.reverse()
return print(arr)
if __name__=="__main__":
t=int(input())
for i in range
- 오류 분석: pop(n)은 O(n), pop() 및 pop(-1)은 O(1), 목록 대신 양방향 목록인 deque를 사용하여 줄일 수 있음(O( 1 ))
from collections import deque
def main():
p=input().strip() #명령어
n=int(input()) #주어진리스트 길이
arr=deque((int(ii) for ii in map(str,input()(1:-1).split(',')) if ii.isdigit()))
r=0 #reverse 횟수
for i in p:
if i=='R': r+=1
elif i=='D':
if len(arr)!
=0 :
if r%2==0:
arr.popleft() # reverse 짝수(맨앞제거)
r=0
else:
arr.pop() # reverse 홀수(맨뒤제거)
else :
return print('error')
else: pass
if r%2!
=0 : arr.reverse()
return print(str(list(arr)).replace(' ',''))
if __name__=="__main__":
t=int(input())
for i in range
계속 실수를 해서 당황스러웠는데 원인은 시간이 아니라 결과적으로 출력되는 리스트에 띄어쓰기가 안되더라구요.. ^^!