ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [python]Algo - 구현🔑
    파이썬/알고리즘 공부 2021. 10. 21. 19:29
    728x90

    구현🚓


    ❓모함가 길드 문제

    문제

    <문제>


    코드

     n = int(input())
     data = list(map(int, input().split()))
     data.sort()
     print(data)
    
     result = 0
     count = 0
    
     for i in data:
          count += 1
          if count >= i:
              result += 1
              count = 0
     print(result)
    
     result = 0
     count = 0

    문제 접근법

    • 오름차순 정률 이후에 공포다 가장 낮은 모험가부터 하나씩 확인
    • 앞에서부터 공포도를 하나씩 확인하며 '현재 그룹에 포함된 모험가의 수'가 '현재 확인하고 있는 공포도'보다 크거나 같다면 이를 그룹으로 설정

    이행렬 감 잡기 위한 구현

    코드

     for i in range(5):
         for j in range(5):
             print('(', i, ',', j, ')', end = '')
         print()
    
     ( 0 , 0 )( 0 , 1 )( 0 , 2 )( 0 , 3 )( 0 , 4 )
     ( 1 , 0 )( 1 , 1 )( 1 , 2 )( 1 , 3 )( 1 , 4 )
     ( 2 , 0 )( 2 , 1 )( 2 , 2 )( 2 , 3 )( 2 , 4 )
     ( 3 , 0 )( 3 , 1 )( 3 , 2 )( 3 , 3 )( 3 , 4 )
     ( 4 , 0 )( 4 , 1 )( 4 , 2 )( 4 , 3 )( 4 , 4 )
     # 그냥 이해를 돕기위한 형식으로 뽑아봅
     ============================================= 방향잡기
     # 위에 숫자가 뽑히는 형태를 보면 어렵지 않게 이해가능하다
     #ex) (2,2)에서 오른쪽으로 이동할경우(2, 3) == y가 1증가
     #ex) (2,2)에서 왼쪽으로 이동할경우(2, 1) == y가 1감소
    
         동 서 남  북
     dx = [0, 0, 1,-1]
     dy = [1,-1, 0, 0] 
    
     x, y = 2, 2
     for i in range(4):
         nx = x + dx[i]
         ny = y + dy[i]
         print(nx, ny) 
     =================================================
    
     n = int(input())
     x, y = 1, 1
     plans = input().split()
     dx = [0, 0, -1, 1]
     dy = [-1, 1, 0, 0]
     move_types = ['L', 'R', 'U', 'D']
    
     for plan in plans:
         for i in range(len(move_types)):
             if plan == move_types[i]:
                 nx = x + dx[i]
                 ny = y + dy[i]
         if nx < 1 or ny < 1 or nx > n or ny > n:
             continue
         x, y = nx, ny
         print(x, y)
     print(x, y)
    #===============================
    # R R R D D (위, 위, 위, 아래, 아래로 입력할 경우)
    1 2
    1 3
    1 4
    2 4
    3 4
    3 4
    ex> 5 , R, R, R, D, D ===> 3, 5

    알파벳 정렬 및 숫자 맨뒤에 추가


    문제

    코드

    data = input("숫자를 입력하세요:")
    result = []
    value = 0
    
    for i in data:
        if i.isalpha():
            result.append(i)
        else:
            value += int(i)
    result.sort()
    if value != 0:
        result.append(str(value))
    
    print(''.join(result))

    문제 접근법

    • data 안에 있는 모든 문자열들은 돌면서 숫자가 아닐경우 result에 담아준다
    • 숫자일 경우 그 값을 value에 누적 시켜준다.
    • 문자형으로 변환하여 맨뒤에 넣어준후 join을 이용하여 결합하면 된다

    댓글

Designed by Tistory.