input(), sys.stdin.readline()
문자열 입력 받음.
input()은 개행 문자 미포함된 값 저장. sys.stdin.readline()은 개항 문자 포함된 값 저장.
sys.stdin.readline()의 속도가 더 빠름.
https://afterdawncoding.tistory.com/37
split 함수
문자열.split()
문자열.split('구분자')
문자열.split('구분자', 분할횟수)
문자열.split(sep='구분자', maxsplit=분할횟수)
구분자는 생략가능
문자열을 maxsplit 횟수만큼 sep 구분자를 기준으로 문자열을 구분하여 리스트로 만듦.
maxsplit의 기본값은 -1. 문자열 전체를 계속해서 자름
문자열.split(1) 불가능
문자열.split(',', 1) 가능
문자열.split(maxsplit=1) 가능
.split()의 경우 띄어쓰기와 엔터를 구분해서 문자열을 나눔.
예시)
s = "aa.bb.cc."
t = "aa.bb.cc.dfdf.adad.dfaioi"
r0 = s.split()
r1 = s.split('.')
r2 = s.split(sep='.')
print(r0)
print(r1)
print(r2)
print(t.split('.', 3))
결과 :
['aa.bb.cc.']
['aa', 'bb', 'cc']
['aa', 'bb', 'cc']
['aa', 'bb', 'cc', 'dfdf.adad.dfaioi']
map(function, iterable)
여러개의 데이터를 한 번에 다른 형태로 변환 가능.
인자 : 함수, 반복 가능한 자료형(리스트, 튜플 등)
함수에는 함수 또는 변환하고 싶은 자료형 list, int등이 들어올 수 있음.
users = [{'mail': 'gregorythomas@gmail.com', 'name': 'Brett Holland', 'sex': 'M'},
... {'mail': 'hintoncynthia@hotmail.com', 'name': 'Madison Martinez', 'sex': 'F'},
... {'mail': 'wwagner@gmail.com', 'name': 'Michael Jenkins', 'sex': 'M'},
... {'mail': 'daniel79@gmail.com', 'name': 'Karen Rodriguez', 'sex': 'F'},
... {'mail': 'ujackson@gmail.com', 'name': 'Amber Rhodes', 'sex': 'F'}]
def conver_to_name(user):
... first, last = user["name"].split()
... return {"first": first, "last": last}
for name in map(conver_to_name, users):
... print(name)
...
결과 >
{'first': 'Brett', 'last': 'Holland'}
{'first': 'Madison', 'last': 'Martinez'}
{'first': 'Michael', 'last': 'Jenkins'}
{'first': 'Karen', 'last': 'Rodriguez'}
{'first': 'Amber', 'last': 'Rhodes'}
map과 split을 활용하여 입력 받은 정수들의 합을 구하기
a, b = map(int, input('숫자 두 개를 입력하세요: ').split())
print(a + b)
결과 >
숫자 두 개를 입력하세요: 10 20 (입력)
30
print(sep="", end="")
출력문에 옵션 부여하기
sep = ""은 출력문들을 구분하면서 넣어줄 문자를 설정할 수 있음.
생략시 공백으로 구분됨
end = ""는 출력을 완료한 뒤의 내용을 수정할 수 있음.
생략시 자동으로 개행됨
print("a", "b", "c")
print("d", "e", "f")
결과 >
a b c
d e f
print("a", "b", "c", end = "")
print("d", "e", "f", sep = "")
결과 >
a b cdef
윗줄에서 개행을 없애고 아랫줄에서 구분자 없이 출력되도록 하였다.
print("a", "b", "c", end = "wow\n")
print("d", "e", "f", sep = "wow")
결과 >
a b cwow
dwowewowf
파이썬 문자열 연산
파이썬에서는 문자열의 더하기와 곱하기가 지원된다.
문자열 더하기는 문자열끼리 연결시켜준다.
a = '엄'
b = '준'
c = '식'
print(a + b + c)
결과 >
엄준식
문자열 곱하기는 곱한 개수만큼 문자를 출력할 수 있다.
for i in range(1, int(input())+1):
print('*' * i)
결과 >
5 입력 >
*
**
***
****
*****
사칙연산 연산자
** 거듭제곱
// 나누기 연산 후 정수 부분(몫)
% 나누기 연산 후 나머지 부분
M = int(input())
a = M // 10 # 십의 자리 숫자
b = M % 10 # 일의 자리 숫자
print(a, b)
결과 >
26 입력 >
2, 6
len, count 함수
len(문자열)
인자로 들어온 문자열의 길이를 반환함.(공백포함)
문자열.count(x, _start, _end)
문자열의 _start부터 _end미만 범위에서 x문자열이 몇개 들어있는지를 반환함.(대소문자 구분)
s = 'The weeknd'
print(len(s))
print(s.count('e'))
print(s.count('e', 0, 3))
결과 >
10
3
1
join 함수
'구분자'.join(리스트)
인자로 넘겨주는 리스트의 요소들을 구분자로 구분하여 하나의 문자열로 합쳐줌.
각 문자열끼리의 덧셈을 하되 구분자로 구분시켜주는 것과 같음.
a = ['a','b','c']
new_a = ''.join(a)
print(new_a)
new_a = ' '.join(a)
print(new_a)
new_a = '_'.join(a)
print(new_a)
결과 >
abc
a b c
a_b_c
index(), find() 함수
index(value, start, end)
배열에서 value의 index를 찾아주는 함수. 중복된 값이 있다면 가장 최소의 index를 반환.
start, end 생략가능.
튜플, 리스트와 같은 iterable 자료형과 문자열 모두 사용 가능.
a = [1, 2, 3, 4, 5]
b = [6, 7, 8, 7, 9]
c = 'abcdef'
print(a.index(3))
print(a.index(7, 0, 3))
print(c.index('c'))
2
1
2
find(value, start, end)
문자열에서 value가 몇 번째에 위치해 있는지에 대한 index 값을 반환.
(문자열에서만 가능하므로 리스트, 튜플과 같은 iterable 자료형에서는 index()함수를 사용해야 한다.)
start, end 생략 가능.
찾는 value값이 없으면 -1을 반환.
word = 'adefb'
alpha = 'abcde'
for i in range(len(word)):
print(word.find(alpha[i]))
0
4
-1
1
2
오름차순 내림차순 정렬 함수 .sort() sorted()
.sort(리스트)
.sort()는 리스트의 원본 값을 직접 수정하되, 정렬한 값을 반환하지는 않는다.
a = list(map(int, input().split(" ")))
print(f'정렬 전 : {a}')
a.sort()
print(f'정렬 후 : {a}')
b = a.sort()
print(f'리턴 값 확인 : {b}')
a.sort(reverse = True)
print(f'내림차순 정렬 : {a}')
>> 2 6 1 4 3
정렬 전 : [2, 6, 1, 4, 3]
정렬 후 : [1, 2, 3, 4, 6]
리턴 값 확인 : None
내림차순 정렬 : [6, 4, 3, 2, 1]
sorted(리스트)
sorted()는 리스트 원본 값을 유지하되, 정렬된 새 리스트 값을 반환한다.
a = list(map(int, input().split(" ")))
print(f'정렬 전 : {a}')
b = sorted(a)
print(f'리스트 원본 a : {a}')
print(f'새로운 리스트 반환 값 b : {b}')
c = sorted(a, reverse = True)
print(f'내림차순 정렬 : {c}')
>>5 2 1 4 3
정렬 전 : [5, 2, 1, 4, 3]
리스트 원본 a : [5, 2, 1, 4, 3]
새로운 리스트 반환 값 b : [1, 2, 3, 4, 5]
내림차순 정렬 : [5, 4, 3, 2, 1]
아스키 코드 변환 ord() chd()
ord(문자)
문자의 유니코드 정수 값을 반환
chr(정수)
정수의 유니코드 문자 값을 반환
정수의 유효 범위는 0 ~ 1,114,111
print(ord('a'))
print(chr(122))
word = 'ABCDE'
for i in word:
new_word = chr(ord(i)+32)
print(new_word, end='')
97
z
abcde
'알고리즘 문제 풀이' 카테고리의 다른 글
[python] 백준 2920 : 음계 (0) | 2022.01.28 |
---|---|
[python] 백준 2908 : 상수 (0) | 2022.01.27 |
[python] 백준 1152 : 단어의 개수 (0) | 2022.01.23 |
[python] 백준 2884 : 알람시계 (0) | 2022.01.23 |
[python] 백준 2577 : 숫자의 개수 (0) | 2022.01.22 |