실행 시간 제한 | 메모리 제한 |
---|---|
1 초 | 512 MB |
이번 시간에는 반복문 중 하나인 for 문에 대해 배워볼거에요
들어가기에 앞서 한가지 상황을 봅시다.
다음 중 사과의 개수는?
이런 프로그램을 코드로 작성해야 한다면 어떻게 컴퓨터에게 요청해야 할까요?
눈으로는 3개란 것을 알수 있지만, 리스트(List)안에 무수히 많은 원소가 있는 경우 하나씩 세어보기는 힘들어요
하지만 우리는 컴퓨터에게 명령을 내려 어떤 리스트(List)가 주어져도 사과의 개수를 새거나 다른 상황에 활용할 수 있습니다.
그럼 이런 상황을 코드로 작성한다면 어떻게 컴퓨터에게 요청할까요?
그 방법이 for 문입니다.
For 문은 리스트처럼 순회가 가능한 데이터가 주어지면, 원소를 하나씩 꺼내어 반복된 코드를 실행할 수 있어요.
python 에서는 for 문을 다음과 같이 작성합니다.
for 원소 in 여러개의 원소(순회 가능) :
각 원소들에게 실행할 코드
위의 상황을 코드로 작성해볼까요?
elements = ['사과', '딸기', '바나나', '포도', '사과', '딸기', '포도', '사과', '딸기', '바나나']
count = 0
for fruit in elements:
if fruit == '사과': # 만약 fruit이 '사과'라면?
count = count + 1
print(count)
# 결과
# 3
위의 코드는 위의 그림처럼 과일들을 하나씩 꺼내오면서
꺼내온 과일이 '사과' 라면 count 의 수를 +1 하는 코드에요
이와 비슷한 상황이 다양한 방식으로 등장하기 때문에
여러가지 방법으로 위의 코드를 작성할 수 있습니다.
range 는 리스트를 매개변수로 전달하는 방식이 아닌, 정수를 입력하여 순회가능한 데이터를 만들고 꺼내오는 방식입니다.
range는 주로 3가지 형태로 많이 쓰입니다.
1. range(end)
elements = ['사과', '딸기', '바나나', '포도', '사과', '딸기', '포도', '사과', '딸기', '바나나']
count = 0
for i in range(len(elements)): # len은 elements의 길이를 나타냅니다.
if elements[i] == '사과': # 만약 fruit이 '사과'라면?
count = count + 1
print(count)
# 결과
# 3
range(N) 를 수행하면 (N은 정수라 가정)
0부터 시작하여 N 미만까지의 정수를 1의 간격으로 생성합니다.
예로 range(5)를 입력하면, [0,1,2,3,4] 형태의 데이터가 생산됩니다.
위의 코드는
elements 리스트의 원소 개수(length)를 계산한 뒤
0 <= x < len(elements) 범위의 정수를 갖는 데이터를 생산하고
하나씩 순회하며 i 번째 index의 원소가 '사과' 일때 count를 세는 방법입니다.
2. range(start, end)
elements = ['사과', '딸기', '바나나', '포도', '사과', '딸기', '포도', '사과', '딸기', '바나나']
count = 0
for i in range(0, len(elements)):
if elements[i] == '사과': # 만약 fruit이 '사과'라면?
count = count + 1
print(count)
# 결과
# 3
range(a, b) 를 수행하면 (a와 b는 정수라 가정)
a부터 시작하여 b 미만까지의 정수를 1의 간격으로 생성합니다.
예로 range(0, 5)를 입력하면, [0,1,2,3,4] 형태의 데이터가 생산됩니다.
위의 코드는
elements 리스트의 원소 개수(length)를 계산한 뒤
0 <= x < len(elements) 범위의 정수를 갖는 데이터를 생산하고
하나씩 순회하며 i 번째 index의 원소가 '사과' 일때 count를 세는 방법입니다.
3. range(start, end, step)
elements = ['사과', '딸기', '바나나', '포도', '사과', '딸기', '포도', '사과', '딸기', '바나나']
count = 0
for i in range(0, len(elements), 1):
if elements[i] == '사과': # 만약 fruit이 '사과'라면?
count = count + 1
print(count)
# 결과
# 3
range(a, b, step) 를 수행하면 (a, b, step은 정수라 가정)
a부터 시작하여 step씩 증가하고 b 미만까지의 정수를 생성합니다.
예로 range(0, 5, 1)를 입력하면, [0,1,2,3,4] 형태의 데이터가 생산됩니다.
위의 코드는
elements 리스트의 원소 개수(length)를 계산한 뒤
0부터 시작하여 1씩 증가하여 len(elements) 미만의 정수를 1의 간격으로 데이터를 생산하고
하나씩 순회하며 i 번째 index의 원소가 '사과' 일때 count를 세는 방법입니다.
이제 실습해볼까요?
실습 문제
임의의 과일 리스트와 하나의 과일 이름이 주어집니다.
이때, 주어진 과일 이름이 과일 리스트에 몇 개 담겨있는지 구하세요.
첫 번째 줄에는 과일 이름들이 나열되어 있고
두 번째 줄에는 개수를 세야 하는 과일의 이름이 주어집니다.
주어진 과일 이름이 과일 리스트에 몇 개 담겨있는지 출력합니다.
사과,딸기,바나나,포도,사과,딸기,포도,사과,딸기,바나나 바나나
2
출처: 돌핀코딩