KEEP GOING

[python] 코딩 테스트 준비 kit 본문

python

[python] 코딩 테스트 준비 kit

jmHan 2022. 4. 28. 20:36
반응형

목차

    1. range

    n = 5
    # 0부터 n-1까지
    for i in range(n):
        print(i, end=' ')
    # n-1부터 0까지 
    for i in reversed(range(n)):
        print(i, end=' ')

     

    2. 동 남 서 북

    # 동 남 서 북
    dx = [0,1,0,-1]
    dy = [1,0,-1,0]
    
    
    def turn(position):
        if position == 3:
            return 0
        return position+1

     

    2-1) 사용 예제 - 달팽이 숫자 

    # 동 남 서 북
    dx = [0,1,0,-1]
    dy = [1,0,-1,0]
    
    
    def turn(position):
        if position == 3:
            return 0
        return position+1
    
    n = 3
    board = [[0]*n for _ in range(n)]
    x,y = 0,0
    p = 0
    board[x][y] = 1
    for i in range(2, n**2+1):
        nx = x + dx[p]
        ny = y + dy[p]
        if nx < 0 or nx >= n or ny < 0 or ny >= n or board[nx][ny] != 0:
            p = turn(p)
            nx = x + dx[p]
            ny = y + dy[p]
        board[nx][ny] = i
        x = nx
        y = ny
    
    for i in range(n):
        print(board[i])

     

    3. set 

    - 원소의 중복을 제거해줌 

    lst = [1,5,5,4,7,5,8]
    # 중복 제거
    print(set(lst))
    print(list(set(lst)))
    
    lst = [(1,2),(1,2),(1,2),(1,8),(7,2)]
    # 중복 제거
    print(set(lst))
    print(list(set(lst)))

    arr= [1,2,3,4,5]
    arr = set(arr)
    # 이미 존재하는 원소여서 추가 x
    arr.add(5)
    print(arr)
    # 추가 가능
    arr.add(10)
    print(arr)

     

     

    4. DFS

    def dfs(x, y):
        d = [(1,0),(0,1),(-1,0),(0,-1)]
        visited[x][y] = True
    
        for dx, dy in d:
            nx = x + dx
            ny = y + dy
            if 0 <= nx < n and 0 <= ny < n:
                if not visited[nx][ny]:
                    board[nx][ny] = board[x][y] + 1
    
    n = 4
    board = [[1]*n for _ in range(n)]
    visited = [[False]*n for _ in range(n)]
    for i in range(n):
        for j in range(n):
            if not visited[i][j]:
                dfs(i, j)
    
    for i in range(n):
        print(board[i])

     

    5. 리스트 뒤에서부터 접근

    arr = [1,2,3,4,5]
    n = len(arr)
    # range 범위로 인덱스 접근 
    for i in reversed(range(n)):
        print(i, end=' ')
    print()
    # 배열을 거꾸로 뒤집어 인덱스 접근 : 내장함수 사용
    for data in reversed(arr):
        print(arr.index(data), end=' ')
    print()
    # 배열을 거꾸로 뒤집어 인덱스 접근 : slicing 사용 
    for data in arr[::-1]:
        print(arr.index(data), end=' ')

     

    6. find, index

    s = 'Happy new year'
    print(s.find('H')) #0
    print(s.index('H')) #0
    print(s.find('T')) #-1
    print(s.index('T')) #ValueError

     

    find()

    - 찾는 문자가 없는 경우 -1 리턴

    - 리스트, 튜플, 딕셔너리 자료형에서는 사용 불가. 사용시 Attribute Error 발생  

    - 오직 문자열에서만 사용 가능

    index()

    - 찾는 문자가 없는 경우 Value Error 발생 

    - 리스트, 튜플, 딕셔너리 자료형에서는 사용 불가. 사용시 Attribute Error 발생  

    - 문자열, 리스트, 튜플 자료형에서 사용 가능 

    - 딕셔너리에서는 사용 불가. 사용시 Attribute Error 발생 

     

    9.  dictionary value 가져오기 (get)

    dic = {'a':1, 'b':2, 'c':3}
    print(dic.get('a'))
    print(dic.get('d'))
    print(dic.get('d', 0)) # 'd'가 없는 경우 0 리턴
    print(dic)

    - 딕셔너리.get(키) : key에 대한 value 리턴   

                                딕셔너리에 해당 key가 없는 경우 None 리턴

    - 딕셔너리.get(키, 0) : 딕셔너리에 조회할 key가 없는 경우 None이 아닌 '0' 리턴

                                     (딕셔너리에 해당 키가 추가되는 것은 아님!! None을 0으로 대체해줄 뿐)

     

    10. dictionary key 삭제하기 (del, pop)

    dic = {'a':1, 'b':2, 'c':3}
    del dic['a']
    print('del \'a\' =>', dic)
    del dic['d'] # KeyError

    - del 딕셔너리[키] : del은 키워드. 딕셔너리에서 key 제거

                                 딕셔너리에 해당 key가 없는 경우 KeyError 발생 

     

    dic = {'a':1, 'b':2, 'c':3}
    print(dic.pop('a'))
    print(dic.pop('d', '없음'))
    print(dic.pop('d'))

    - 딕셔너리.pop(키) : key 삭제와 동시에 대응하는 value 리턴

                                  딕셔너리에 key가 없는 경우 KeyError 발생

    - 딕셔너리.pop(키, 0) : 딕셔너리에 삭제할 key가 없는 경우, KeyError 아닌 '0' 리턴

     

    11. dictionary 순회하기 (for)

    dic = {'신희선': 150, '조현하': 180, '정하연': 130}
    
    for key in dic: # key로만 순회하기
        print(key, dic[key])
    print('******************')
    for key, value in dic.items(): # key-value 동시 순회하기
        print(key, value)

     

    12. 원소의 개수 세기

    - collections 모듈의 Counter 클래스 사용

    from collections import Counter
    
    arr = [5,1,5,21,5,15,7,7,7,1,5]
    dic = Counter(arr)
    print(dic)

     

    반응형
    Comments