파이썬 enumerate 는 순서가 있는 자료형의 index번호 와 index값 을 반환하는 함수다.
>>> arr = ['토끼','말','늑대','오리','고양이','여우','곰']
>>> for i in arr:
print(i)
토끼
말
늑대
오리
고양이
여우
곰
이런 array를 enumerate 를 사용하여
>>> arr = ['토끼','말','늑대','오리','고양이','여우','곰']
>>> for i,v in enumerate(arr):
print('number:{}, value:{}'.format(i,v))
number:0, value:토끼
number:1, value:말
number:2, value:늑대
number:3, value:오리
number:4, value:고양이
number:5, value:여우
number:6, value:곰
이런식으로 index번호를 붙여 사용 가능하다
그리고 enumerate(arr,start=number) 로 시작 번호를 정할 수 있다.
>>> arr = ['토끼','말','늑대','오리','고양이','여우','곰']
>>> for i,v in enumerate(arr,start=1):
print('number:{}, value:{}'.format(i,v))
number:1, value:토끼
number:2, value:말
number:3, value:늑대
number:4, value:오리
number:5, value:고양이
number:6, value:여우
number:7, value:곰
그럼 enumerate 를 사용하여 쉬운 문제하나를 풀어보게따.
백준 15565번 귀여운 라이언(https://www.acmicpc.net/problem/15565). enumerate를 응용하면 쉽게 풀 수 있는 문제이다.
푼사람이 얼마없어 숏코1등중인 문제..
N개의 인형 중 라이언인형이 K개 이상 있는 가장 작은 연속된 인형들의 집합을 구하는 문제.
문제만봐도 감이온다.
라이언 인형의 index만 알 수 있으면 따로 빼내여 K개 만큼의 index차이중 가장 최소값을 출력하면 될듯.
인형의수 N과 라이언인형의 수 K를 입력받고 인형들의 집합 arr을 입력받자.
N,K = map(int, input().split())
arr = input().split()
그리고 라이언이 K개 이하일경우 예외처리를 해 주고 enumerate로 라이언 인형의 위치배열을 만든다.
if arr.count('1') < K :
print(-1)
else:
lion = [i for i, x in enumerate( arr ) if x == '1']
인형의 배열 arr에서 if x=='1'
으로 라이언 인형만 골라내여 lion배열을 만든다.
그리고 만들어진 lion 배열의 K차이만큼의 인덱스중 가장 최소값을 출력하면 정답.
print(min(lion[K-1+j] - lion[j] + 1 for j in range(len(lion)-K+1)))
전체소스
N,K = map(int, input().split())
arr = input().split()
if arr.count('1') < K :
print(-1)
else:
lion = [i for i, x in enumerate( arr ) if x == '1']
print(min(lion[K-1+j] - lion[j] + 1 for j in range(len(lion)-K+1)))
'Python' 카테고리의 다른 글
[Python]파이썬 설치하기(window) (0) | 2018.06.27 |
---|---|
파이썬 인덱싱,슬라이싱(문자열,리스트) (0) | 2018.06.18 |
[Python]파이썬 입력함수(input) (0) | 2018.06.11 |
[Python]웹페이지 크롤링(requests,beautifulSoup 사용) (1) | 2017.11.23 |
[Python]이클립스에서 파이썬 사용하기(PyDev) (1) | 2017.11.15 |