티스토리 뷰

매번 알고리즘 문제를 풀 때, 필요한 개념을 그때그때 구글에 검색하는 식으로 여태까지 풀었습니다.

그러다 보니 매번 검색하게 되고, 정작 머리에는 하나도 안 남더라고요...

그래서 공부를 해야겠다 마음먹은 와중에 너무 깔끔하게 정리된 블로그 글이 있어서

코딩테스트를 풀 때 참고하고 싶어 필요한 부분만 제 블로그에 정리 글을 쓰게 되었습니다. 문제 시 비공개 처리하겠습니다!

참고한 블로그 글입니다!

https://covenant.tistory.com/141?category=874690

 

🔥 용감하게 시작하는 코딩테스트 1편

왜 이 글을 쓰는가? 많은 기업들이 코딩테스트를 치릅니다. 취준생은 이에 맞추어 준비를 해야합니다. 코딩테스트는 처음 공부하려면 막막하고 당황스러울 것입니다. 심지어 코딩테스트 때 작

covenant.tistory.com

https://covenant.tistory.com/142?category=874690

 

🔥 용감하게 시작하는 코딩테스트 2편

0. 무엇을 공부할까요? 파이썬의 정수, 문자열, 배열 자료형에 대해서 살펴볼 것입니다. 파이썬 기본 문법책을 펴보면 가장 앞 단원에 나오기에 자신이 있을텐데요. 코딩테스트를 준비하는 관점

covenant.tistory.com

1.  입력, 출력 방법

(1) 입출력 가속

input(), print()를 쓰다 보면 시간 초과가 나는 경우가 종종 있어서 조금이라도 시간을 단축하기 위해 사용합니다.

import sys 

N = int(sys.stdin.readline())
sys.stdout.write(N)

이런 식으로 사용할 수 있고, sys를 쓰는게 귀찮다면

from sys import stdin, stdout

input = stdin.readline 
print = stdout.write

N = int(input())
print(N)

이렇게 사용할 수 있습니다.

이때 주의할 점은 문자열을 입력받을 때 뒤에 strip()을 넣어주세요!

안그러면 \n까지 같이 입력받을 수 있습니다.

 

(2) 2차원 배열 입력받기

테스트 케이스가

3

1 2 3

4 5 6

7 8 9

이런 식으로 되어 2차원 배열을 입력 받아야 한다면

MAP = [list(map(int, input().split())) for _ in range(N)]

 

(3) 정수와 배열이 같은 줄에 들어오는 경우

테스트 케이스가

3 10 20 30

3 7 5 12

이런식으로 앞에 배열의 개수가 있고 뒤에 배열이 있는 경우는 

N, *arr = map(int, input().split())

이렇게 따로 나눌 수 있습니다.

 

(4) 문자열을 한 글자씩 배열에 저장하는 경우

테스트 케이스가

3

AAAA

ABCA

AAAA

이고, 한 글자씩 배열에 담아서 사용하고 싶을 때 다음과 같은 방법을 사용합니다.

arr = [list(input()) for _ in range(N)]

이렇게 담으면

arr = [['A', 'A', 'A', 'A'] ['A', 'B', 'C', 'A'] ['A', 'A', 'A', 'A']]

다음과 같이 저장됩니다.

 

2. 진법 계산 

(1) 10진수 -> 2, 8, 16진수

bin(42) 
# '0b101010' 
oct(42) 
# '0o52' 
hex(42) 
# '0x2a'

(2) 2, 8, 16진수 -> 10진수

int('0b111100', 2) 
# 60
int('0o74', 8) 
# 60
int('0x3c', 16)
# 60

 

3. 문자열

(1) 문자열 거꾸로 하기

alph = "ABCD"
alph[::-1]
# alph = "DCBA"

결과는 "DCBA"가 됩니다.

 

(2) 아스키코드 변환

# 문자열 -> 아스키코드

print ord('A')
# 65

# 아스키코드 -> 문자열

print chr(65)
# A

 

4. 리스트

(1) 리스트 초기화

가로가 N, 세로가 M인 그래프 배열을 초기화할 때 다음과 같이 사용합니다.

N, M = map(int, input().split())
arr = [[0] * N for _ in range(M)]

(2) 리스트 요소를 거꾸로 하기 

arr = [1, 2, 3]
arr.reverse()
# arr = [3, 2, 1]

(3) 리스트 내의 특정한 값의 개수

arr = [1, 2, 3]
arr.count(1) # 1

(4) 리스트 정렬

리스트의 요소가 리스트인 경우 lambda를 통해서 우선순위를 결정합니다.

다음은 첫 번째 요소를 기준으로 정렬하고 첫번째 요소가 같을 경우, 두 번째 요소를 기준으로 정렬한다는 의미입니다.

arr.sort() # 오름차순
arr.sort(reverse=True) # 내림차순
arr.sort(key=lambda x:(x[0], x[1]))

 

5. 삼항 연산자

if 내의 조건이 맞다면 a, 틀리면 b

res = a if a > b else b

 

6. 리스트 변환 (문자열 변환)

(1) 문자열 -> 리스트

num_str = "1,3,2"
print(num_str.split(','))
# ['1', '3', '12']

split()을 사용하면 , 기준으로 리스트로 변환할 수 있습니다.

 

(2) 리스트 -> 문자열

num_list = ['1', '3', '2']
','.join(num_list)
# '1,3,2'

join()을 사용하면 , 이 리스트 요소에 배치되는 문자열로 변환할 수 있습니다.

 

7. 값이 알파벳인지 숫자인지 판별하기

(1) 알파벳 확인

"a".isalpha() # True
"3".isalpha() # False

 

판별하고 싶은 문자 뒤에 isalpha()를 붙이면, 알파벳일 경우 True, 아닐 경우 False

 

(2) 숫자 확인

"3".isdigit() # True
"a".isdigit() # False

판별하고 싶은 문자 뒤에 isalpha()를 붙이면, 숫자일 경우 True, 아닐 경우 False

 

8. 2차원 배열 뒤집기

board = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
new_board = list(map(list, zip(*board)))

print(new_board)
# [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함