Introduction

본 포스트는 알고리즘 학습에 대한 정리를 재대로 하기 위하여 남기는 것입니다. 더불어 기본 내용은 나동빈 저의 〖이것이 취업을 위한 코딩 테스트다〗라는 교재 및 유튜브 강의의 내용에서 발췌했고, 그 외 추가적인 궁금 사항들을 검색 및 정리해둔 것입니다.

기본 입출력

개념

  • 모든 프로그램은 적절한 입출력 양식을 갖고 있습니다.
  • 특히나 코딩 테스트 등 요구사항이 있을 때 이를 어떤 식으로 출력하는가는 해당 요구 사항을 충족하나 안 하나를 결정 지을 수 있는 것입니다.
  • 따라서 프로그램 동작의 첫 단계이자 마지막이 입출력이라고 보시면 됩니다.

자주 사용되는 표준 입력 방식

  • input() : 한줄의 문자열을 입력받는 함수
  • map() : 리스트의 모든 원소에 각각 특정한 함수를 적용할 때 사용하는 함수
  • 예시 ) 공백 기준으로 구분된 데이터를 입력 받을 때

    list(map(int, input().split()))

  • 예시 ) 공백 기준으로 구분된 데이터의 개수가 많지 않다면 단순히 다음과 같이 사용한다.

    a, b, c = map(int, input().split())

입력을 위한 전형적인 소스코드

# 데이터의 개수 입력
n = int(input())

# 각 데이터를 공백을 기준으로 구분하여 입력
data = list(map(int, input().split()))
# map으로 정수형으로 형변환 하며, split은 구분자를 지정하는 것입니다.

data.sort(reverse=true)
print (data)
# n, m, k 를 공백을 기준으로 구분하여 입력
n, m, k = map(int, input().split())

print(n, m, k)

빠르게 입력 받기

  • 사용자로부터 입력을 최대한 빠르게 받아야 하는 경우가 있습니다.
  • 파이썬의 경우 sys 라이브러리에 정의되어 있는 sys.stdin.readline() 메서드를 사용하시면 더 빠른 입력을 얻어낼 수 있습니다.
  • 단, 입력 후 엔터키가 줄 바꿈 기호로 입력되어서, rstrip() 메서드를 함께 사용하여 줄바꿈을 제거해줘야 합니다.
  • 이렇게까지 입력을 받는 것에 대해 중요시 하는 이유는, 코딩 테스트나 알고리즘을 작성 시에 입력의 갯수가 많아 질 때를 위한 것이라고 보시면 됩니다. 입력이 수만 ~ 수십만에 달 할 경우 이걸 받는 것만으로도 상당한 작업이 되기 때문에 이만큼 입출력의 속도 역시 신경을 써야 한다고 생각하시면 될 것입니다. 😀
  • 이진탐색, 정렬, 그래플 등에서 사용이 요구될 수 있습니다.
# 빠르게 입력받기
import sys

data = sys.stdin.readline().rstrip()
print(data)

자주 사용되는 표준 출력 방법

  • print() : 내장된 기본 출력 함수, 각 변수를 콤마를 이용해 띄어쓰기로 구분하여 출력할 수 있습니다.

    단, 기본 상태에선 출력 이후 줄 바꿈을 수행합니다. 즉,줄바꿈이 필요가 되지 않는 경우 ‘end’ 속성을 이용해야합니다.

출력을 위한 전형적인 소스 코드

a = 1
b = 2
print(a, b)
print(7, end=" ")
print(8, end=".")

answer = 7
print("정답은 " + str(answer) + "입니다.")
# 실행 결과
1 2
7 8.정답은 7입니다.
"""
개행이 end 의 디폴트값이지만 줄바꿈이
없어지면서 지정한 방식으로 end 속성이 출력 된다.
파이썬은 문자열과 정수형 간의 덧셈은 안되지만,
동일한 형일 경우 덧셈으로 연산이 가능합니다.
"""

f-string 예제

  • 파이썬 3.6 부터 사용 가능한 방식입니다. 문자열 앞에 접두사 f 를 붙여 사용합니다.
  • 중괄호 안에 변수명을 기입하여 간단히 문자열과 정수를 함께 넣을 수 있습니다.
answer = 7
print(f"정답은 {answer} 입니다.")
# 실행 결과
정답은 7 입니다.
"""
해당 방식을 활용하게 되면 형변환 없이
문자열과 정수값을 혼용하여 출력하는 것이 가능합니다.
"""

🧑🏻‍💻 알고리즘 박살내기 시리즈🧑🏻‍💻