백준에서 입력 받는 방법
import sys
input = sys.stdin.readline
주의할 점!
str을 받을 때 꼭 .strip()을 해서 공백을 없애야 한다.
for문 다 돌고 난 후
for 쓰고 else: 하면 for문이 다 돌았을 경우에만 else 내용을 수행한다.
이거 은근히 유용하다.
for i in range(10):
print(i)
else:
print("for문 끝!")
end 옵션
백준에서 정답 쓸 때 많이 사용함.
word1 = "hello"
word2 = "python"
print(word1, end=" ") # "hello"를 출력하고 한 줄 띄우지 않고 끝에 공백을 출력
print(word2)
hello python
print("Hello World", end="!") # "Hello World"를 출력하고 한 줄을 띄우지 않고 끝에 느낌표(!)를 추가
Hello World!
word1 = "hello"
word2 = "python"
print(word1, end="") # "hello"를 출력하고 한 줄 띄우지 않고 끝에 빈 문자열을 출력
print(word2)
hellopython
논리 연산자
range
range(10, 0, -1) << 거꾸로 세는 것 알아야함.
range(1, 11) # 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
range(1, 11, 2) # 1, 3, 5, 7, 9
range(10, 0, -1) # 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
range(0, 5) # 0, 1, 2, 3, 4
range(5) # 0, 1, 2, 3, 4 (start가 생략되어 range(0, 5)와 같음)
# 1 ~ 10까지의 정수 목록이 담긴 range에서 한 개씩 꺼내 출력하는 코드
for i in range(1, 11):
print(i, end=" ")
1 2 3 4 5 6 7 8 9 10
함수와 메서드
함수와 메서드는 무엇이 다른가? 함수와 메서드는 포함 관계이다. 함수가 더 넓은 개념이고, 그 안에 메서드가 포함되어 있다. 메서드는 함수 중에서도 특정 타입에 종속된 함수를 지칭하는 용어다. 예를 들어 append, pop과 같은 메서드는 리스트에서만 사용 가능하다. 문자열에서는 사용할 수 없다. 그래서 append는 독립적으로 쓰이지 않고 리스트.append()와 같은 식으로 점(.)을 찍고서 사용된다. 따라서 이들은 함수인 것은 맞지만, 더 정확하게 메서드라는 용어로 표현한다. 반면 len()과 같은 함수는 특정 타입에 종속되지 않고 독립적으로 사용되기 때문에 메서드가 아닌 함수라고 부른다. 정리하자면 모든 메서드는 함수이지만, 모든 함수가 메서드는 아니다.
sorted
sort랑 sorted랑 구분해서 잘 쓸 것
a = [3, 1, 0, 5, 31]
print(sorted(a)) # 오름차순
print(sorted(a, reverse=True)) # 내림차순
print(a) # 기존 리스트에 변화를 주지는 않음
[0, 1, 3, 5, 31]
[31, 5, 3, 1, 0]
[3, 1, 0, 5, 31]
reversed
a = [1, 2, 3, 4, 5]
print(reversed(a))
print(list(reversed(a))) # list()로 형 변환을 해주어 리스트로 사용
print(a) # 기존 리스트에 변화를 주지는 않음
<list_reverseiterator object at 0x1029f4e50>
[5, 4, 3, 2, 1]
[1, 2, 3, 4, 5]
reverse
이거 가끔 쓰임
a = [1, 2, 3, 4, 5]
a.reverse()
print(a)
[5, 4, 3, 2, 1]
insert(인덱스, 원소)
a = [1, 2, 3, 4, 5]
a.insert(1, 10)
print(a)
[1, 10, 2, 3, 4, 5]
pop(index)
a = [1, 2, 3, 4, 5]
b = a.pop(3)
print(a)
print(b)
[1, 2, 3, 5]
4
remove(특정 원소)
- 리스트에서 특정 원소 x 중 첫 번째 원소를 삭제한다.
- .pop()과는 달리 반환값은 없다.
a = [1, 2, 3, 4, 5]
a.remove(3)
print(a)
[1, 2, 4, 5]
sorted() vs .sort()
sorted() 함수는 인자로 들어온 리스트를 정렬한 새로운 리스트를 반환한다. 따라서 원본 리스트는 정렬되지 않는다. .sort() 메서드는 원본 리스트 자체를 정렬한다. 반환값이 없다.
a = [3, 5, 1, 4, 2]
a.sort() # 오름차순
b = [3, 5, 1, 4, 2]
b.sort(reverse=True) # 내림차순
print(a)
print(b)
[1, 2, 3, 4, 5]
[5, 4, 3, 2, 1]
extend()
가끔 쓰임
a = [1, 2, 3, 4, 5]
a.extend([6, 7, 8]) # [6, 7, 8]의 원소가 분해되어 A의 끝에 흡수
print(a)
[1, 2, 3, 4, 5, 6, 7, 8]
count(원소)
이거 자주 쓴다는데 나는 별로 안씀.
a = [3, 5, 1, 4, 2, 5]
print(a.count(5))
2
2글자 짜리도 된다.
s = "banana"
print(s.count("na"))
2
.index(찾는 문자)
맨 처음 나오는 원소의 인덱스
만약 원소가 없으면 에러 난다.
a = [3, 5, 1, 4, 2, 5]
print(a.index(5))
1
a = [3, 5, 1, 4, 2, 5]
print(a.index(10))
에러 발생
.split
이건 진짜 필수임.
백준에서 문제 input 할 때 필수
s = "kyle,alex,justin,ken"
print(s.split(","))
['kyle', 'alex', 'justin', 'ken']
.strip(제거할 문자)
이것도 sys.stdin.readline 이걸로 입력 받고 꼭 해주기
제거할 문자를 여러 개 넣으면, 해당하는 문자들을 양쪽에서 모두 제거한 새로운 문자열을 반환한다.
s = "Hello World"
print(s.strip("Hd"))
ello Worl
.find(찾는 문자)
인덱스랑 비슷하다.
s = "python"
print(s.find("t"))
2
만약 없으면 -1을 반환
.replace(기존 문자, 새로운 문자)
s = "I play the piano"
print(s.replace("piano", "violin"))
I play the violin
s = "python"
print(s.replace("p", ""))
ython
삽입할 문자.join(리스트)
리스트 안에 문자여야 한다.
이거 백준 정답 만들 때 자주 나옴.
words = ["I", "play", "the", "piano"]
print("$".join(words))
I$play$the$piano
words = ["I", "play", "the", "piano"]
print(" ".join(words))
I play the piano
words = ["a", "p", "p", "l", "e"]
print("".join(words))
apple
'배운 내용 > 코딩테스트' 카테고리의 다른 글
다익스트라 최단 경로 (0) | 2023.01.26 |
---|---|
개미전사, 1로 만들기, 효율적인 화폐 구성, 금광(다이나믹) (0) | 2023.01.26 |
다이나믹 프로그래밍(피보나치) (0) | 2023.01.26 |
정렬된 배열에서 특정 수의 개수 구하기 (0) | 2023.01.26 |
떡볶이 떡 만들기(이진탐색) (0) | 2023.01.26 |