[Python] 코딩테스트를 위한 파이썬 문법 02 - 조건문, 반복문, 함수, 입출력
포스트
취소

[Python] 코딩테스트를 위한 파이썬 문법 02 - 조건문, 반복문, 함수, 입출력

본 포스팅은 “이것이 취업을 위한 코딩테스트다 with 파이썬” - (한빛미디어, 나동빈 지음)을 바탕으로 공부한 내용을 정리한 것입니다.

  1. 조건문
    • 비교 연산자
    • 논리 연산자
    • 기타 연산자
  2. 반복문
    • while 문
    • for 문
  3. 함수
  4. 입출력

1. 조건문

조건문은 프로그램을 작성할 때 프로그램의 흐름을 제어하는 문법이다.

조건문을 이용하면 조건에 따라서 프로그램의 로직을 설정할 수 있다.

파이썬에서 조건문을 작성할 때는 if - elif - else를 이용한다.

1
2
3
4
5
6
if 조건문 1:
    조건문 1 True   실행되는 코드
elif 조건문 2:
    조건문 1 False 이고, 조건문 2 True   실행되는 코드
else:
    위의 모든 조건문이 모두 False   실행되는 코드

들여쓰기의 경우 스페이스바 4번과 을 사용한다.

비교 연산자

조건문에는 비교 연산자를 자주 사용한다.

X == YX와 Y가 서로 같을 때
X != YX와 Y가 서로 다를 때
X > YX가 Y보다 클 때
X < YX가 Y보다 작을 때
X >= YX가 Y 이상일 때
X <= YX가 Y 이하일 때

논리 연산자

X and YX와 Y가 모두 True일 때
X or YX와 Y 중 하나라도 True일 때
not XX가 False일 때

기타 연산자

X in 리스트리스트 안에 X가 들어가 있을 때
X not in 문자열문자열 안에 X가 들어가 있지 않을 때
  • 조건문이 참이어도 아무것도 처리하고 싶지 않을 때 pass
1
2
3
4
5
6
7
# 예시 1
score = 85
if score >= 80:
    pass
else:
    print('프로그램을 종료합니다')
# 프로그램을 종료합니다
  • 줄바꿈 없이 간략하게 표현 가능
1
2
3
4
5
# 예시 2
score =85
if score >= 80: result = "Success"
else: result = "Fail"
# Success
  • 조건부 표현식으로 if-else문을 한 줄에 작성 가능
1
2
3
4
5
# 예시 3
score = 85
result = "Success" if score >= 80 else "Fail"
print(result)
# Success

특히 조건부 표현식은 리스트 원소 값 변경하여 또 다른 리스트 만들 때 매우 간결하게 사용 가능하다.

리스트에서 특정 원소 값만 없애는 예시이다.

1
2
3
4
5
6
# 예시 4
a = [1,2,3,4,5,5,5]
remove_set = {3,5}
result = [i for i in a if i not in remove_set]
print(result)
# [1,2,4]
  • 실제 수학 부등식을 그대로 사용 가능

다른 언어와 달리 파이썬은 조건문에서 수학의 부등식을 그대로 사용 가능하다.

1
2
3
4
5
# 예시 5
x = 15
if 0 < x < 20:
    print("x는 0 이상 20 미만의 수입니다.")
# x는 0 이상 20 미만의 수입니다.

다른 언어처럼 표현해도 상관없다.


2. 반복문

반복문은 특정한 소스코드를 반복 실행할 때 사용할 수 있다.

코딩 테스트에서는 보통 for문을 더 자주 사용하는 듯 하다.

while 문

조건문이 참일 때 반복 수행된다.

다음은 1부터 9까지의 홀수의 합을 구하는 예시이다.

1
2
3
4
5
6
7
8
9
10
11
12
# 예시 1
i = 1
result = 0

# i가 9 이하일 때 아래 코드 반복 실행
while i <= 9:
    if i % 2 == 1:
        result += i
    i += 1

print(result)
# 25

for 문

다음과 같은 형태로 리스트에서 반복문을 표현 할 수 있다.

in 뒤의 데이터로는 리스트, 튜플, 문자열 등이 사용될 수 있다.

리스트의 첫번째 인덱스부터 차례대로 하나씩 방문한다.

1
2
for 변수 in 리스트:
	실행할 소스코드

range()를 활용해도 된다. range(시작값, 끝값+1) 형태이다.

continue

반복문 안에서 continue를 만나면 프로그램의 흐름은 반복문의 처음으로 돌아간다.

다음은 점수로 학생의 합격 여부를 판별할 때, 블랙리스트에 있는 학생은 무시하는 예시이다.

1
2
3
4
5
6
7
8
9
10
scores = [90,85,77,65,97]
black_list = {2,4}

for i in range(5):
    if i + 1 in black_list:
        continue
    if scores[i] >= 80:
        print(i+1, "번 학생은 합격입니다.")
# 1번 학생은 합격입니다.
# 2번 학생은 합격입니다.

3. 함수

다음과 같은 형태로 함수를 선언하여 사용하면 효율적으로 작성할 수 있다.

1
2
3
def 함수명(매개변수):
    실행할 소스코드
    return 반환 

global 키워드

함수 안에서 함수 밖의 변수 데이터를 변경해야 하는 경우가 있다.

global 키워드로 변수를 지정하면, 해당 함수에서 지역변수 만들지 않고 전역변수를 바로 참조한다.

1
2
3
4
5
6
7
8
9
10
11
# 예시
a = 0
def func():
    global a
    a += 1

for i in range(10):
    func()

print(a)
# 10

람다 표현식

파이썬은 또한 람다 표현식을 사용할 수 있다. 다음은 덧셈을 표현한 예시이다.

1
2
3
4
5
6
7
# 일반적인 add() 메서드 사용
def add(a,b):
    return a + b
print(add(3,7)) # 10

# 람다 표현식으로 구현한 add() 메서드
print((lambda a, b: a + b)(3,7)) # 10

4. 입출력

입력

파이썬에서는 구분자가 줄 바꿈인지 공백인지에 따라서 다른 처리를 요구한다.

줄 바꿈이라면 int(input())을 여러 번 사용하면 되는데, 공백이라면 다음과 같이 하면된다.

1
2
3
4
5
6
# 데이터의 개수 입력
n = int(input())
# 각 데이터를 공백으로 구분하여 입력
data = list(map(int, input().split()))

data.sort(reverse = True)

공백으로 구분된 데이터의 개수가 많지 않다면 단순하게 map() 함수를 활용해도 된다.

1
2
# n,m,k를 공백으로 구분하여 입력
n, m, k = map(int,input().split())

단순하게 input() 함수를 그대로 사용하는 것보다 더 빠르게 입력 받는 방법이 있다.

sys.stdin.readlin() 함수를 활용하는 것이다. 기본적으로 엔터가 줄 바꿈 기호로 입력된다.

rstrip()을 사용하면 공백 문자를 제거한다.

1
2
3
4
import sys

# 문자열 입력받기
data = sys.stdin.readline().rstrip()

출력

변수와 문자를 섞어서 출력해야할 때 str() 함수를 이용하거나 자료형을 콤마(,)를 기준으로 구분하여 출력한다.

1
2
3
4
5
6
7
8
answer =7
# 변수를 문자열로 바꾸어 출력
print("정답은 " + str(answer) + "입니다.")
# 정답은 7입니다.

# 각 변수를 콤마(,)로 구분하여 출력
print("정답은",str(answer),"입니다.")
# 정답은 7입니다.

f-string

f-string 문법은 문자열 앞에 접두사 ‘f’를 붙임으로써 사용할 수 있다.

단순히 중괄호({}) 안에 변수를 넣음으로써, 자료형의 변환 없이도 바꾸지 않고도 간단히 문자열과 정수를 함께 넣을 수 있다.

1
2
3
answer = 7
print(f"정답은 {answer}입니다.")
# 정답은 7입니다.

참고

“이것이 취업을 위한 코딩테스트다 with 파이썬” - (한빛미디어, 나동빈 지음)

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.