본 포스팅은 “이것이 취업을 위한 코딩테스트다 with 파이썬” - (한빛미디어, 나동빈 지음)을 바탕으로 공부한 내용을 정리한 것입니다.
- 조건문
- 비교 연산자
- 논리 연산자
- 기타 연산자
- 반복문
- while 문
- for 문
- 함수
- 입출력
1. 조건문
조건문은 프로그램을 작성할 때 프로그램의 흐름을 제어하는 문법이다.
조건문을 이용하면 조건에 따라서 프로그램의 로직을 설정할 수 있다.
파이썬에서 조건문을 작성할 때는 if
- elif
- else
를 이용한다.
1
2
3
4
5
6
if 조건문 1:
조건문 1이 True 일 때 실행되는 코드
elif 조건문 2:
조건문 1이 False 이고, 조건문 2가 True 일 때 실행되는 코드
else:
위의 모든 조건문이 모두 False 일 때 실행되는 코드
들여쓰기의 경우
스페이스바
4번과탭
을 사용한다.
비교 연산자
조건문에는 비교 연산자를 자주 사용한다.
X == Y | X와 Y가 서로 같을 때 |
X != Y | X와 Y가 서로 다를 때 |
X > Y | X가 Y보다 클 때 |
X < Y | X가 Y보다 작을 때 |
X >= Y | X가 Y 이상일 때 |
X <= Y | X가 Y 이하일 때 |
논리 연산자
X and Y | X와 Y가 모두 True일 때 |
X or Y | X와 Y 중 하나라도 True일 때 |
not X | X가 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 파이썬” - (한빛미디어, 나동빈 지음)
- 자료 주소: http://www.hanbit.co.kr/src/10307/
- 저자 깃허브 주소: http://github.com/ndb796
- 동영상 주소: http://youtube.com/user/HanbitMedia93