이것이 취업을 위한 코딩테스트다 with 파이썬
반복문
파이썬에서는 while문과 for문이 있는데 어떤 것을 사용해도 상관없다.
하지만 코테에서의 실제 사용 예시를 확인해 보면, 대부분 for문의 소스코드가 더 짧은 경우가 많다.
while문
코테에서 무한 루프를 구현할 일은 거의 없으니 실수로 무한 루프가 발생하지 않도록 주의하자.
i = 1
result = 0
# i가 9보다 작거나 같을 때 아래 코드를 반복적으로 실행
while i <= 9:
result += i
i += 1
print(result)
1부터 9까지의 수 중에서 홀수만 더하고자 할 때
i = 1
result = 0
# i가 9보다 작거나 같을 때 아래 코드를 반복적으로 실행
while i <= 9:
if i % 2 == 1:
result += i
i += 1
print(result)
for문
리스트를 사용하는 대표적인 for문의 구조는 다음과 같은데,
in 뒤에 오는 데이터에 포함되어 있는 모든 원소를 첫 번째 인덱스부터 차례대로 하나씩 방문한다.
in 뒤에 오는 데이터로는 리스트, 튜플, 문자열 등이 사용될 수 있다.
for 변수 in 리스트:
실행할 소스코드
1부터 9까지의 정수의 합을 구하는 예제를 for문으로 작성해 보자.
for문에서 수를 차례대로 나열할 때는 range()
를 주로 쓰는데
range(시작 값, 끝 값 +1) 형태로 쓰인다.
예를 들어 1부터 9까지의 모든 수를 담고자 한다면 range(1, 10)이라고 작성한다.
result = 0
# i는 1부터 9까지의 모든 값을 순회
for i in range(1, 10):
result += i
print(result) # 45
range()의 값으로 하나의 값만을 넣으면, 자동으로 시작 값은 0이 된다.
주로 리스트나 튜플 데이터의 모든 원소를 첫 번째 인덱스부터 방문해야 할 때 이 방법을 사용한다.
리스트의 인덱스는 0부터 출발하기 때문이다.
학생의 번호를 1번부터 매긴다고 했을 때, 다음과 같이 학생마다 합격 여부를 출력할 수 있다.
scores = [90, 85, 77, 65, 97]
for i in range(5):
if scores[i] >= 80:
print(i + 1, "번 학생은 합격입니다.")
반복문 안에서 continue를 만나면 프로그램의 흐름은 반복문의 처음으로 돌아간다.
2번 학생과 4번 학생은 점수가 높아도 합격하지 못한다고 가정해 보자.
해당 학생은 무시하고 다시 다음 번호부터 처리하도록 돌아가게 할 수 있다.
scores = [90, 85, 77, 65, 97]
cheating_list = {2, 4}
for i in range(5):
if i + 1 in cheating_list:
continue
if scores[i] >= 80:
print(i + 1, "번 학생은 합격입니다.")
반복문은 얼마든지 중첩해서 사용할 수 있다.
중첩된 반복문은 코테에서 '플로이드 워셜 알고리즘', '다이나믹 프로그래밍' 등의 알고리즘 문제에서 매우 많이 사용된다.
다음은 구구단 2단부터 9단까지의 모든 결과를 출력하는 소스코드 예시이다.
for i in range(2, 1):
for j in range(1, 10):
print(i, "*" j, "=", i * j)
print()