코딩테스트를 준비하면서..(1)

1 분 소요

🤞코딩테스트를 준비하면서..(1)

개발자로 취준을 한다면 피할 수 없는 코딩테스를 대비하면서 자주 접하는 기본기에 대해서 정리를 하고자 이 글을 쓰고 있다.

복습과 정리를 위한 글이지만 나처럼 파이썬으로 코딩테스를 준비한다면 이 글을 읽는 분들에게 많은 도움이 되었으면 좋겠다.

입출력

map

1 2 와 같이 공백으로 입력값이 주어졌을 때, 원하는 변수에 입력을 받는 방법이다.

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

간혹가다가 입력 값이 많은 경우input()을 사용하면 pypy3로 제출했더라도 시간 초과를 경험한 적이 있다. 이럴 때는 sys를 import 해서 입력을 받아야 한다.

import sys
n = int(sys.stdin.readline()) # 입력
sys.stdout.write(n) # 출력

이 방법으로 시간초과가 나진 않지만 제한시간에 문제를 풀어야하는 코딩 테스트에서 입력을 받을때마다 sys.stdin. 을 사용하기에는 너무 귀찮다.

from sys import stdin 
input = sys.stdin.readline 
print = sys.stdout.write

위와 같은 코드를 맨 위에 작성하게 되면 평소에 사용하는 print()함수를 호출하듯 사용하면된다.

배열, 리스트

1. pythonic한 배열 입력

요즘에 풀고잇는 ‘이것이 취업을 위한 코딩 테스트다 with 파이썬’ 에서의 문제나 백준 사이트의 문제를 보면 첫 번째 줄에 입력되는 숫자, 다음줄 부터는 공백을 기준으로 배열을 입력받는 문제들을 자주 볼 수 있다.

n = int(input())
data = []
for _ in range(n):
	data.append(list(map(int, input().split())))

이 방법이 내가 계속 쓰던 코드인데 아래처럼 pythonic한 코드로 바꿀 수 있다.

data = [list(map(int, input().split())) for _ in range(int(input()))]
2. 정수와 배열이 같은 줄에 들어오는 경우
3 1 2 3
5 1 2 3 4 5
4 1 2 3 4

위처럼 한줄에 첫번째는 갯수 n, 두번째 부터 n개의 수를 배열을 입력받아야 하는 경우가 있다.

n, *data = map(int, input().split())

data 변수 앞에 *을 붙이면 뒤이어 나오는 값이 data 배열에 저장되는 것을 확인할 수 있다.

3. 문자열을 한글자씩 배열에 저장
dfajlaifjlaj

이 처럼 문자열이 주어졌을 때 각 문자마다 배열에 저장하고 싶다면 list(input())을 사용하면 된다.

data = [list(input()) for _ in range(n)]
4-1. 리스트를 문자열로 출력

문제를 풀다보면 정답을 출력할 때 문자열로 출력하는 경우를 많이 보았다. 문제를 풀때는 리스트로 풀다가 마지막에 문자열로 출력하기위해서 매번 구글링을 한 후 출력을 했었다.

data = ['h','e','l','l','o']
print("".join(data))

data안의 문자가 숫자인 경우

arr = [1, 2, 3, 4] 
print("".join(map(str, arr)))
4-2 공백을 포함해 출력
1 2 3 4 #원하는 출력 결과
print(*arr)

문자열

문자열을 거꾸로
data = "dkjlaf"
print(data[::-1])
아스키코드
ord() # 문자를 아스키코드로 변환
chr() # 아스키코드를 문자로 변환

카테고리:

업데이트:

댓글남기기