백준 알고리즘

백준알고리즘 기본

Peter Yoon 2021. 6. 21. 16:57

 

입력 부분

 

readline()

  • 하나의 줄을 그대로 읽어옴. 공백 그리고 줄바꿈(\n) 까지 그대로 읽음.
a = "ABCDE EFG\n"
a.split()

["ABCDE" "EFG"]

split()

  • 공백,줄바꿈 기준으로 전부 분할함.
a= "ABCDE EFG\n"
a.split()

['A', 'B', 'C', 'D', 'E', ' ', 'E', 'F', 'G', '\n']

 


rstrip()

  • 오른쪽 줄바꿈 기호 제거 가능

 

 

 

예시 !!

WBWBWBWB
BWBWBWBW
WBWBWBWB

board = [list(f.readline().rstrip()) for _ in range(N)]

rstrip()으로 줄바꿈 제거하고 list()로 묶으면 [ 'w', 'b','w','b'...] 처럼된다.

 

 

인덱스 문제

 

N,M 행렬에서 k by k 마스크를 슬라이딩 윈도우로 한번씩 돌고 싶을 때!

 

N- i + 1 = K 

마지막 i 번째에서 K크기의 필터가 적용되면 딱 맞다.  for j in range(i) 번 반복!

 


좌표계

5,5 행렬을에서 좌표 x,y를 더했을때, 홀짝 홀짝 패턴으로 반복된다!

 


데이터

아스키코드

  • ord() 함수 쓰면 된다.
char = 'a'
ord(a)

65

 


최대 최속값

  • 최대값에는 작은값을, 최솟값에는 큰값을... 반대로 넣어줘야한다!! 헷갈리지말자.

p2108

 

정렬문제

 

Merge sorting 에서 합병 할 때 나머지 (rest elemets) 꼭꼭 합쳐주자!!

return res + left[i:] + right[j:]

def merge(left, right):
    i, j, lm, rm = 0, 0, len(left), len(right)
    res = []
    while i < lm and j < rm:
        if compare(left[i], right[j]):
            res.append(left[i])
            i += 1
        else:
            res.append(right[j])
            j += 1

    return res + left[i:] + right[j:]

p11650, p11651

 


 

'백준 알고리즘' 카테고리의 다른 글

삼성 #16637 괄호치기 문제  (0) 2021.08.17
백준 #18770  (0) 2021.06.24
백준 #10989  (0) 2021.06.23
백준 #1018  (0) 2021.06.21
백준 #2231 분해합문제  (0) 2021.06.21