[python] 파이썬 string 활용-3
BOJ 1316 - 그룹 단어 체커
n = int(input())
count = 0
def checker(x):
v = [0]*123
for i in range(len(x)):
if v[ord(x[i])]==0:
v[ord(x[i])]=1
else:
if x[i-1]!=x[i]:
return False
return True
for _ in range(n):
x = list(input())
if checker(x):
count += 1
print(count)
다른 사람의 풀이 - 숏코딩
s.find 부분이 이해가 잘 가지 않는다…아직 문법이 익숙하지가 않아서 그런 것 같다.
아마 그냥 sorted(s)
를 하면 happy가 [a,h,p,p,y] 가 될 텐데 우리가 원하는 것은 [h,a,p,p,y]로 기존 알파벳을 기준으로 정렬하는 것이기 때문일 것 같다.
a = 0
for i in range(int(input())):
s = input()
a+=list(s) == sorted(s, key=s.find)
print(a)
[파이썬] 정렬함수 sort()와 sorted()
sorted()
라는 정렬함수는 시퀀스 자료형 뿐만 아니라 순서에 구애받지 않는 자료형에도 적용할 수 있다.
기존의 리스트를 변경하는 것이아니고, 정렬된 결과를 list로 반환한다.
#str
sorted("hello") # ["e","h","l","l","o"]
#list
sorted([5,2,1,3,4]) # ["1","2","3","4","5"]
sorted([[2,1,3],[3,2,1],[1,2,3]]) # [[1, 2, 3], [2, 1, 3], [3, 2, 1]]
#set
sorted({3,2,1}) # [1,2,3]
#tuple
sorted((3,2,1)) # [1,2,3]
#dict
sorted({3:1,2:3,1:4}) # [1,2,3]
sort()
라는 리스트 메소드는 리스트 자체를 정렬된 상태로 변경하기 때문에, 일반저그올 sorted()
가 조금 더 편리하다.
myList = [4,2,3,5,1]
myList.sort()
myList #[1,2,3,4,5]
key 매개변수
객체의 데이터 중에서 특정한 데이터를 기준으로 정렬하기 위해 key 매개변수로 정렬을 하기전에 각 요소에 대하여 적용되는 함수를 지정할 수 있다.
# 2번째 문자를 기준으로 정렬(각각 e, y, i)
myList = ["hello", "python" , "hi"]
sorted(myList, key=lambda x:x[1]) # ["hello", "hi", "python"]
내림차순 정렬
파라미터 reverse
값을 True
로 만들어준다.
sorted(range(1,10),reverse=True)
# [9, 8, 7, 6, 5, 4, 3, 2, 1]
[파이썬] array[::] 용법
arr[::]
, arr[1:2:3]
, arr[::-1]
등으로 배열의 index에 접근하는 방법을 Extended Slices 라고 부른다.
arr[A:B:C]
는 index A 부터 index B까지 C의 간격으로 배열을 만들어라라는 말이다.
arr = range(10)
# [0,1,2,3,4,5,6,7,8,9]
arr[::-1]
# 처음부터 끝까지 -1칸 간격으로 ( == 역순으로)
# [9,8,7,6,5,4,3,2,1,0]
>> arr[1::2]
# index 1 부터 끝까지 두 칸 간격으로
# [1,3,5,7,9]
References
- [python-기초] 파이썬 정렬함수(sorted)
- [Wonkyung’s blog - Tip] Python Array[::] 사용법
댓글남기기