[ALGO] IMPLEMENTATION PROBLEM

Updated:

문제 1

1_럭키스트레이트

문제 1 풀이

  • 정수를 문자열로 받아서 리스트에 저장
  • 앞 절반의 합을 front에 저장, 뒤 절반의 합을 back에 저장

code

n = list(input())
front = 0
back = 0
for i in range(len(n)):
    if i<len(n)//2:
        front += int(n[i])
    else:
        back += int(n[i])
if front == back:
    print("LUCKY")
else:
    print("READY")
n = input()
front = list(map(int, n[:len(n)//2]))
back = list(map(int, n[len(n)//2:]))
if sum(front) == sum(back):
    print("lUCKY")
else:
    print("READY")

code

# 모범답안
n = input()
length = len(n)

for i in range(length//2):
  summary += int(n[i])

for i in range(length//2, length):
  summary -= int(n[i])

if summary == 0:
  print("LUCKY")
else:
  print("READY")

문제 2

2_문자열재정렬

문제 2 풀이

  • 문자열을 리스트에 저장후 sort()을 통해 정렬 (오름차순 정렬 시 숫자가 알파벳보다 앞에 정렬됨)
  • 숫자이면 sum에 더해주면서 합을 저장, 알파벳이면 새로운 배열에 저장
  • 숫자들의 합 sum을 마지막에 새로운 배열에 저장

code

n = list(input())
n.sort()
sum = 0
arr=[]

for data in n:
    if data.isdigit():
        sum += int(data)
    else:
        arr.append(data)
arr.append(sum)

for data in arr:
    print(data, end="")

code

# 모범답안
data = input()
result = []
value = 0

for x in data:
  if x.isalpha():
    result.append(x)
  else:
    value += int(x)

result.sort()

if value != 0:
  result.append(str(value))

print(''.join(result))

문제 3 (프로그래머스 코드 참고)

3_문자열압축 3_2

code

def solution(s):
    answer = 0
    return answer

문제 4 (프로그래머스 코드 참고)

4_자물쇠와열쇠 4_2

code


문제 5

5_뱀

code

n = int(input())                        # 보드의 크기
k = int(input())                        # 사과 개수

graph = [[0] * n for _ in range(n)]
head_x,head_y = 0,0
tail_x,tail_y = 0,0
graph[head_x][head_y] = 1
for _ in range(k):
    x,y = map(int, input().split())
    graph[x-1][y-1] = 10                # 사과 위치 표시
l = int(input())                        # 방향 변환 횟수

direction_change = []                   # 방향 변환 정보
for _ in range(l):
    direction_change.append(input().split())              # X 초 뒤에 'L'이면 왼쪽으로 90도회전, 'D'이면 오른쪽으로 90도 회전
change_time = [int(i[0]) for i in direction_change]      # 방향 바꾸는 시간 (오름차순)
change_direction = [i[1] for i in direction_change] # 방향 바꾸는 정보 (시계/반시계)

dx = [0,1,0,-1]         # 동, 남, 서, 북
dy = [1,0,-1,0]
direction = 0           # 처음 방향은 동쪽
time = 0                # 몇 초 뒤에 끝나는지
time_index = 0
snake = [(head_x,head_y)]

def turn_left():
    global direction
    direction -= 1
    if direction == -1:
        direction = 3

def turn_right():
    global direction
    direction += 1
    if direction == 4:
        direction = 0


while True:
    if time in change_time:     # 방향 바꿀 시간이면
        if change_direction[time_index] == 'L':         # 왼쪽 90도 회전
            turn_left()
        else:                                           # 오른쪽 90도 회전
            turn_right()
        time_index += 1
    nx = head_x + dx[direction]
    ny = head_y + dy[direction]
    if nx < 0 or nx >= n or ny < 0 or ny >= n or graph[nx][ny] == 1:
        time += 1
        break
    elif graph[nx][ny] != 10:         # 사과가 없으면
        graph[tail_x][tail_y] = 0
        del snake[0]


    head_x = nx
    head_y = ny
    snake.append((head_x,head_y))
    tail_x = snake[0][0]
    tail_y = snake[0][1]
    graph[nx][ny] = 1
    time += 1
    # print(head_x,head_y)

print(time)

문제 6 (프로그래머스 코드 참고)

6_기둥과보설치 6_2 6_3 6_4 6_5

code


문제 7

7_치킨배달 7_2

code


문제 8 (프로그래머스 코드 참고)

8_외벽점검 8_2 8_3 8_4 8_5 8_6

code




[출처] 이것이 취업을 위한 코딩 테스트다 with 파이썬 (나동빈 지음)

Tags:

Categories:

Updated:

Leave a comment