코딩 테스트를 위한 파이썬 기초 문법 ( 이것이 취업을 위한 코딩 테스트다, (조건문, 반복문, 함수, 입출력) )
조건문
조건문은 프로그램을 작성할 때 프로그램의 흐름을 제어하는 문법이다.
if문과 if ~ elif ~ else문 등을 이용할 수 있다.
조건문 내의 코드의 블록은 들여쓰기로 설정한다는 점을 기억하자.
(들여쓰기는 스페이스 바 4번 입력하여 작성, Tab도 가능하지만 스페이스가 사실상의 표준이다.)
소스 코드
x = 15
if x >= 10:
print(x)
print()
# 조건문 1이 True일 때 실행되는 코드
if x == 10:
print('x는 10입니다.')
elif x >= 20: # if 조건에 해당하지 않을 때 검사하는 조건문
print('x는 20 이상입니다.')
else: # 위의 조건에 해당하지 않을 때 실행되는 코드
print('x는 10이 아니고 20 미만 입니다.')
출력 결과
15
x는 10이 아니고 20 미만 입니다.
논리 연산자
논리 연산자 | 설명 |
X and Y | X와 Y가 모두 참(True)일 때 참(True)이다. |
X or Y | X와 Y 중에 하나만 참(True)이어도 참(True)이다. |
not X | X가 거짓(False)일 때 참(True)이다. |
다른 언어와 달리 파이썬은 조건문 안에서 수학의 부등식을 그대로 사용할 수 있다.
소스 코드
# 두 조건문은 동일하다.
x = 15
if x > 0 and x < 20:
print("x는 0 초과 20 미만의 수입니다.")
if 0 < x < 20
print("x는 0 초과 20 미만의 수입니다.")
출력 결과
x는 0 초과 20 미만의 수입니다.
x는 0 초과 20 미만의 수입니다.
파이썬의 기타 연산자
기타 연산자 | 설명 |
X in 리스트 | 리스트 안에 X가 들어가 있을 때 참(True)이다. |
X not it 문자열 | 문자열 안에 X가 들어가 있지 않을 때 참(True)이다. |
pass | 조건문의 값이 참(True)이라고 해도 아무것도 처리하지 않고 넘길때 사용한다. |
조건문에서 실행될 소스코드가 한 줄인 경우, 굳이 줄 바꿈을 하지 않고도 간략하게 표현할 수 있다.
그리고 조건부 표현식(Conditional Expression)을 이용하면 if ~ else문을 한 줄에 작성해 사용할 수 있다.
특히 조건부 표현식을 이용하면 리스트에 있는 원소의 값을 변경해서, 또 다른 리스트를 만들때 매우 간결하게 사용할 수 있다.
소스 코드
score = 85
if score >= 80: result = "Success"
else: result = "Fail"
print(result)
result = "Success" if score >= 80 else "Fail"
print(result)
''' 일반적인 형태의 조건문
a = [1, 2, 3, 4, 5, 5, 5]
remove_set = {3, 5}
result = []
for i in a:
if i not in remove_set:
result.append(i)
print(result)
'''
# 리스트 컴프리헨션
a = [1, 2, 3, 4, 5, 5, 5]
remove_set = {3, 5}
result = [i for i in a if i not in remove_set]
출력 결과
Success
Success
[1, 2, 4]
반복문
반복문을 특정한 소스코드를 반복적으로 실행하고자 할 때 사용할 수 있다.
while문과 for문이 존재하지만 코딩 테스트에서의 실제 사용 예시를 확인해보면, 대부분의 경우에서 for문이 더 소스코드가 짧은 경우가 많다.
for문의 경우 in 뒤에 오는 데이터에 포함되어 있는 모든 원소를 첫 번째 인덱스부터 차례대로 하나씩 방문한다.
in 뒤에 오는 데이터로는 리스트, 튜플, 문자열 등이 사용될 수 있다.
소스 코드
# i가 9보다 작거나 같을 때 아래 코드를 반복적으로 실행
# while문
i = 1
result = 0
while i <= 9:
if i % 2 == 1:
result += i
i += 1
print(result)
# for문
# range(시작 값, 끝 값 + 1) 시작 값
# 생략 시 0 (주로 리스트나 튜플 데이터의 모든 원소를 첫 번째 인덱스부터 방문할 때 이 방법 사용)
result = 0
for i in range(1, 10):
result += i
print(result)
#for문 리스트 및 continue 사용
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, "번 학생은 합격입니다.")
출력 결과
25
45
1번 학생은 합격입니다.
5번 학생은 합격입니다.
함수
코딩 테스트에서 테스트 케이스가 입력된 뒤에 테스트 케이스만큼 특정한 알고리즘을 수행한 결과를 반복적으로 출력하도록 요구하는 문제가 출제되는 경우가 많다. 이럴 때는 문제를 푸는 코드를 함수화하면 매우 효과적으로 풀 수 있다.
함수의 구조는 다음과 같다.
소스 코드
''' 함수의 예시
def 함수명(매개변수):
실행할 소스코드
return 반환 값
'''
# 일반적인 함수의 형태
def add(a, b):
return a + b
print(add(3, 7))
# 파라미터의 변수를 직접 지정해서 값을 넣음
def func(a, b):
print("a = ", a, " b = ", b)
func(b = 3, a = 5)
# 함수 내부에서 외부의 변수를 수정하는 함수
c = 0
def func():
global c
c += 1
for i in range(10):
func()
print(c)
# 람다 표현식을 사용한 함수 (간단한 함수를 정의해야 할 때 사용 가능)
print((lambda a, b : a + b) (1, 2))
출력 결과
10
a = 5 b = 3
10
3
입출력
입력 함수 | 설명 |
input() | 한 줄의 문자열을 입력받는다. |
int() | 문자열을 정수로 변환한다. |
map(변환 함수, 순회 가능한 데이터) | 두 번째 인자의 데이터 각각을 첫 번째 함수로 반복한다. |
list(map(int, input().split())) | 입력받은 데이터를 띄어쓰기로 구분하여 각각 정수 자료형의 데이터로 저장하고 해당 데이터를 list형으로 변환한다. |
int(input()) | 줄 바꿈이 있는 데이터를 정수형으로 저장 시 사용한다. |
소스 코드
#입력을 위한 전형적인 소스코드
# 데이터 개수 입력
n = int(input())
print()
# 각 데이터를 공백으로 구분하여 입력
data = list(map(int, input().split()))
data.sort(reverse = True)
print(data)
print()
# 공백을 기준으로 구분하여 적은 수의 데이터 입력
n, m, k = map(int, input().split())
print(n, m, k)
print()
# 입력을 빠르게 받아야 할 때 (정렬, 이진 탐색, 최단 경로 문제 등)
''' rstrip() -> 줄 바꿈 기호 제거 (Enter가 줄 바꿈으로 인식됨, 꼭 호출)
'''
import sys
data = sys.stdin.readline().rstrip()
print(data)
print()
출력 결과
5
1 2 3 4 5
[5, 4, 3, 2, 1]
6 7 8
6 7 8
sadghfahjksdgfahjksdfghjkasdgf
sadghfahjksdgfahjksdfghjkasdgf
출력 함수 | 설명 |
print() | 기본적으로 출력 이후에 줄 바꿈 수행 문자열 끼리만 '+' 연산자 사용가능 문자열이 아닌 데이터는 콤마(,) 로 구분 or 문자열로 변환함 (str() 함수 이용) |
int() | 문자열을 정수로 변환한다. |
map(변환 함수, 순회 가능한 데이터) | 두 번째 인자의 데이터 각각을 첫 번째 함수로 반복한다. |
list(map(int, input().split())) | 입력받은 데이터를 띄어쓰기로 구분하여 각각 정수 자료형의 데이터로 저장하고 해당 데이터를 list형으로 변환한다. |
int(input()) | 줄 바꿈이 있는 데이터를 정수형으로 저장 시 사용한다. |
f-string 문법 print(f'~~~ {변수} ~~~') |
접투사 'f'를 붙힘으로써 중괄호({}) 안에 변수를 넣어 자료형의 변환 없이도 간단히 문자열과 정수를 함께 삽입 가능 |
소스 코드
#출력 예시
a = 1
b =2
print(a, b)
print(a)
print(b)
'''
#출력 시 오류가 발생, 수를 더하는 연산을 사용해서 발생
answer = 7
print("정답은 " + answer + "입니다.)
'''
# 변수를 문자열로 바꾸어 출력하는 소스코드 예시
answer = 7
print("정답은 " + str(answer) + "입니다.")
# 예시 2 (콤마로 구분 시 변수의 값 사이에 의도치 않은 공백이 삽입될 수 있음)
print("정답은", answer, "입니다.")
# 예시 3 (Python 3.6 이상에서 사용 가능)
print(f'정답은 {answer}입니다.')
출력 결과
1 2
1
2
정답은 7입니다.
정답은 7 입니다.
정답은 7입니다.