아이디어지니
아이디어지니 : 개발이야기
아이디어지니
전체 방문자
오늘
어제
  • 분류 전체보기 (26)
    • 안드로이드 (11)
    • 50자다이어리 (2)
    • 코딩테스트 (13)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • functools
  • andorid
  • 백준
  • TextUtils
  • 내일배움카드
  • 안드로이드 서비스
  • 안드로이드
  • greenDAO
  • K디지털기초역량훈련
  • 앱재시작
  • deprecated
  • TextView
  • 1181
  • onStartCommand
  • 안드로이드 애니메이션
  • 패스트캠퍼스
  • 바인딩 서비스
  • jcenter
  • cmp_to_key
  • App Restart
  • 단어정렬
  • null
  • 나도 할 수 있는 Java&Spring 웹 개발 종합반
  • setrecursionlimit
  • null check
  • 커스텀정렬
  • 에라토스테네스의 체
  • 코딩테스트
  • 파이썬
  • Interpolator

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
아이디어지니

아이디어지니 : 개발이야기

코딩테스트

이코테 6강 리뷰 (기본 입출력)

2022. 5. 17. 22:42

기본 입출력

모든 프로그램은 약속된 입출력 양식을 가진다.

프로그램 동작의 첫 번째 단계는 데이터를 입력 받거나 생성하는 것

예) 학생의 성적 데이터가 주어지고 이를 내림차순으로 정렬한 결과를 출력하는 프로그램

 

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

- input() : 한 줄의 문자열을 입력 받는 함수

- map() : 리스트의 모든 원소에 각각 특정한 함수를 적용할 때 사용

n = input() # input은 문자열 입력받은 대로 출력함. 그것을 map()이나 split() 등으로 정수형이나 실수형 등 필요한 원소로 변환하는 것임
n = int(input()) # input 받은 값을 정수형으로 n 변수에 삽입

# 예시) 공백을 기준으로 구분된 데이터를 입력 받을 때
data = list(map(int, input().split()))
data.sort(reverse=True) # 내림차순 정렬

# 예시) 공백을 기준으로 구분된 데이터의 개수가 많지 않다면
a,b,c = input().split() # 단순히 공백을 기준으로 구분된 데이터를 a,b,c 변수에 문자열로 받을 때
a,b,c = map(int, input().split()) # list가 빠지고 a, b, c 각 변수에 int로 변환된 값이 들어감 a,b,c 3가지 보다 많으면 에러발생

# 예시 한 글자씩 자르기
Num = int(input())
listn = list(map(int, str(input())))
print(sum(lstNum)) 
# console -> 
# 5 
# 12345 
# ->15 출력

빠르게 입력 받기

- 사용자로부터 입력을 최대한 빠르게 받아야 하는 경우 sys 라이브러리에 정의 되어있는 sys.stdin.readline() 메서드를 이용한다.

- 단, 입력 후 엔터(enter)가 줄 바꿈 기호로 입력되므로 rstrip() 메서드를 함께 사용한다.

- 입력의 개수가 매우 많은 문제에 대해서는 입력을 받는 것 만으로도 시간 초과가 될 수 있으므로 해당 메서드를 이용하여 해결한다.

- 이진탐색, 정렬, 그래프 관련 문제에서 자주 사용됨

import sys

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

import sys
a = sys.stdin.read().split('\n')

print('%d\n%d\n%d'%(a+b,a-b,a*b))

표준 출력 방법 print()

- 각 변수를 콤마(,)를 이용하여 띄어쓰기로 구분하여 출력할 수 있다.

- print()는 기본적으로 출력 이후에 줄 바꿈을 수행한다.

- 줄바꿈을 원치 않을 경우 end 속성으로 바꿀 수 있다.

a = 1
b = 2
print(a, b) # 1 2 출력
print(7, end=" ") # 7 출력
print(8, end=" ") # 7 8 출력
print(9,2,sep='A') # 9A2 출력

# 여러줄 출력 (쌍따옴표 3개 혹 따옴표 3개)
print("""    8888888888  888    88888
   88     88   88 88   88  88   
  88  88  88     88 88   88888888""")

answer = 7
print("정답은 " + str(answer) + "입니다.") # 7 8 정답은 7입니다. 출력
# 파이썬에서 문자열과 정수형에 대한직접적인 더하기(+) 연산이 안되므로 str()을 이용해 문자형으로 변경 후 연결한다.

- 다음과 같은 방법도 가능

import sys
sys.stdout.write(str(i) + '\n')

f-string

- 파이썬 3.6부터 사용가능하며, 문자열 앞에 접두사 f를 붙여 사용한다.

- 중괄호 안에 변수명을 기입하여 간단히 문자열과 정수를 함께 넣을 수 있음.

answer = 7
print(f"정답은 {answer}입니다.") # answer를 문자형으로 변경할 필요 없음

 

본 글은 나동빈 - 이코테 2021 강의 몰아보기를 토대로 작성한 정리입니다.

좋은 강의를 올려주신 나동빈님께 감사드립니다.

'코딩테스트' 카테고리의 다른 글

[파이썬] 최대공약수와 최소공배수  (0) 2022.08.27
[파이썬] 문자열 포맷팅 Formatting  (0) 2022.07.12
이코테 5강 리뷰 (사전, 집합 자료형)  (0) 2022.05.13
이코테 4강 리뷰 (문자열, 튜플 자료형)  (0) 2022.05.13
    '코딩테스트' 카테고리의 다른 글
    • [파이썬] 최대공약수와 최소공배수
    • [파이썬] 문자열 포맷팅 Formatting
    • 이코테 5강 리뷰 (사전, 집합 자료형)
    • 이코테 4강 리뷰 (문자열, 튜플 자료형)
    아이디어지니
    아이디어지니
    할까 말까 할 때는 하라

    티스토리툴바