본문 바로가기

Algorithm

[구현] 상하좌우, 시각, 왕실의 나이트, 문자열 재정렬 python

<문제> 상하좌우

n = int(input())
x,y = 1,1

dx = [-1,1,0,0]
dy = [0,0,-1,1]
move_types = ['U','D','L','R']
plans = input().split()

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 nx>n or ny<1 or ny>n:
        continue
    x,y = nx,ny
print(x,y)

 

 

 

<문제> 시각

 

문제 설명을 듣고 직접 짠 코드

n = int(input())
cnt=0

for h in range(n+1):
    for m in range(60):
        for s in range(60):
            if(h%10==3)or(m%10==3 or m//10==3)or(s%10==3 or s//10==3):
                cnt +=1
print(cnt)

 

시각을 문자열로 합친 뒤에 그 문자열에 3이 포함되어있는지 확인하는 방식이 더 간단해서 아래처럼 수정했다.

n = int(input())
cnt=0

for h in range(n+1):
    for m in range(60):
        for s in range(60):
            if '3' in str(h)+str(m)+str(s):
                cnt +=1
print(cnt)

 

 

 

<문제> 왕실의 나이트

p = input()
y = ord(p[0])-ord('a')+1
x= int(p[1])

dx = [-1,-2,-2,-1,1,2,2,1]
dy = [-2,-1,1,2,-2,-1,1,2]

cnt = 0

for i in range(len(dx)):
    nx = x+dx[i]
    ny = y+dy[i]
    if nx>0 and nx<9 and ny>0 and ny<9:
        cnt +=1
print(cnt)

 

 

 

<문제> 문자열 재정렬

str = input()
sum = 0
d = []

for i in str:
    if i.isdigit():
        sum += int(i)
    else:
        d.append(i)
d.sort()

for i in d:
    print(i,end='')
print(sum)