파이썬/알고리즘 공부

[python]Algo - 구현🔑

Jimyeung 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을 이용하여 결합하면 된다