파이썬/알고리즘 공부
[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을 이용하여 결합하면 된다