python 코테 준비 기본 복습 4

Ji·2021년 2월 20일
0

2798_ 블랙잭

for i in range(len(list1)-2):
    for j in range(i+1,len(list1)-1):
        for k in range(j+1,len(list1)): 
        # 브루트 포스 알고리즘->모든 경우 검사
            if list1[i]+list1[j]+list1[k]<=m:
                list2.append(list1[i]+list1[j]+list1[k])

7568_ 덩치

  • x,y를 리스트화 해서 이중리스트로 주는 방법
x, y = sys.stdin.readline().split()
a.append([int(x), int(y)]) 

1018_체스 판 다시 칠하기

  • 2차원 배열에서 점점 영역 넓혀가면서 brutal force 알고리즘 조사.
random_origin=[a[j+x][k:k+8] for x in range(8)]
  • 2차원 배열 만들기
ch1=['W','B','W','B','W','B','W','B']
ch2=['B','W','B','W','B','W','B','W']
board1 = [ch1, ch2, ch1, ch2, ch1, ch2, ch1, ch2]
board2 = [ch2, ch1, ch2, ch1, ch2, ch1, ch2, ch1]

2750_수 정렬하기

  • 버블 소트 알고리즘 O(n^2)
for i in range(0,n-1):
    for j in range(0,n-1-i):
        if a[j]>a[j+1]:
            temp=a[j]
            a[j]=a[j+1]
            a[j+1]=temp
  • sort함수
A=[1,2,3,4,5]
A=A.sort() # (X)
A.sort() # ->따로 쓴다.
  • 크기가 정해진 배열 만들기
s=[0]*10000
  • 카운팅 소트 정렬-> 만약, 3 4 5 4 1 이 입력됐다고 하면,
for i in range(n):
    num=int(sys.stdin.readline())
    s[num-1]+=1 
    #이 부분에서 index에 맞게 카운트가 올라가고, [0,1,0,1,2,1]

for i in range(len(s)):
    if s[i]!=0:
        for k in range(s[i]): #카운트의 개수만큼 수를 출력
            print(i+1)

1427_소트 인사이드

  • a를 내림차순으로 정렬
a.sort(reverse=True)

11561_좌표 정렬하기2

  • 이중리스트에서 퀵 정렬 활용
def QS(li):
    if len(li)<=1:
        return li
    piv=li[len(li)//2] #중앙 값 리스트 저장
    le,eq,bi=[],[],[]
    for i in li:
        if i[1]<piv[1]: #y값 부터 비교
            le.append(i)
        elif i[1]>piv[1]:
            bi.append(i)
            
        else: #y값이 같다면 x값 비교
            if i[0]<piv[0]:
                le.append(i)
            elif i[0]>piv[0]:
                bi.append(i)
            else:
                eq.append(i)
    return QS(le)+eq+QS(bi)

1181 단어 정렬

  • 이중 리스트에서 각 열 기준으로 정렬 하는 법
word_cnt.sort(key=lambda x:x[0]) #이중 리스트에서 첫 번째 열 기준으로 정렬 
word_cnt.sort(key=lambda x:x[1]) #이중 리스트에서 두 번째 열 기준으로 정렬
  • 리스트에서 중복 검사하는 법
for v in word_list: #중복 검사하는 법
    if v not in new_list:
        new_list.append(v)
    old_list.append(v)
  • len을 기준으로 오름차순으로 정렬
word.sort(key=lambda x:len(x)) 
  • for문을 써서 리스트를 배열하지 않아도 join 사용해 리스트 요소를 배열 가능.
print("\n".join(word)) 
profile
공부방

0개의 댓글