코딩한걸음
728x90
반응형

코딩 테스트 Coding Test 와 코드 리뷰 Code Review


코딩 테스트 문제풀이의 목표

  • 코딩 테스트 문제풀이를 하며 알고리즘에 대한 이해도를 높힌다
  • 팀원들과 코드 리뷰를 하며 해당 코드를 짠 구체적인 이유를 제시한다
  • https://github.com/raoneli1013/codingtest

문제 1 : https://school.programmers.co.kr/learn/courses/30/lessons/120905

# n의 배수 고르기

# 문제 설명
# 정수 n과 정수 배열 numlist가 매개변수로 주어질 때, 
# numlist에서 n의 배수가 아닌 수들을 제거한 배열을 return하도록 
# solution 함수를 완성해주세요.

# 제한사항
# 1 ≤ n ≤ 10,000
# 1 ≤ numlist의 크기 ≤ 100
# 1 ≤ numlist의 원소 ≤ 100,000

n = 3
numlist = [4, 5, 6, 7, 8, 9, 10, 11, 12]

answer = []
# numlist의 요소가 n으로 나누어 떨어지면 저장
for num in numlist:
    if num%n ==0: answer.append(num)

print(answer)

# 제출용 함수
def solution(n, numlist):
    answer=[]
    for i in numlist:
        if i%n==0: answer.append(i)
    return answer

문제 2 : https://school.programmers.co.kr/learn/courses/30/lessons/120842

# 2차원으로 만들기

# 문제 설명
# 정수 배열 num_list와 정수 n이 매개변수로 주어집니다. 
# num_list를 다음 설명과 같이 2차원 배열로 바꿔 return하도록 
# solution 함수를 완성해주세요.

# num_list가 [1, 2, 3, 4, 5, 6, 7, 8] 로 길이가 8이고 n이 2이므로 
# num_list를 2 * 4 배열로 다음과 같이 변경합니다. 
# 2차원으로 바꿀 때에는 num_list의 원소들을 앞에서부터 n개씩 나눠 
# 2차원 배열로 변경합니다.

# 제한사항
# num_list의 길이는 n의 배 수개입니다.
# 0 ≤ num_list의 길이 ≤ 150
# 2 ≤ n < num_list의 길이

num_list = [1, 2, 3, 4, 5, 6, 7, 8]
n = 2

answer=[]
# range의 step에 n을 주고 for문으로 리스트 만들기
for i in range(0,len(num_list),n):
    a=[]
    for j in range(i,i+n):    
        a.append(num_list[j])
    answer.append(a)
print(answer)

# 제출용 함수
def solution(num_list, n):
    answer=[]
    for i in range(0,len(num_list),n):
        a=[]
        for j in range(i,i+n):    
            a.append(num_list[j])
        answer.append(a)
    return answer

 


문제 3 : https://school.programmers.co.kr/learn/courses/30/lessons/120861

# 캐릭터의 좌표

# 문제 설명
# 머쓱이는 RPG게임을 하고 있습니다. 
# 게임에는 up, down, left, right 방향키가 있으며 각 키를 누르면 
# 위, 아래, 왼쪽, 오른쪽으로 한 칸씩 이동합니다. 
# 예를 들어 [0,0]에서 up을 누른다면 캐릭터의 좌표는 [0, 1], 
# down을 누른다면 [0, -1], left를 누른다면 [-1, 0], 
# right를 누른다면 [1, 0]입니다. 
# 머쓱이가 입력한 방향키의 배열 keyinput와 맵의 크기 board이 매개변수로 주어집니다. 
# 캐릭터는 항상 [0,0]에서 시작할 때 키 입력이 모두 끝난 뒤에 
# 캐릭터의 좌표 [x, y]를 return하도록 solution 함수를 완성해주세요.

# [0, 0]은 board의 정 중앙에 위치합니다. 
# 예를 들어 board의 가로 크기가 9라면 캐릭터는 왼쪽으로 최대 [-4, 0]까지 
# 오른쪽으로 최대 [4, 0]까지 이동할 수 있습니다.

# 제한사항
# board은 [가로 크기, 세로 크기] 형태로 주어집니다.
# board의 가로 크기와 세로 크기는 홀수입니다.
# board의 크기를 벗어난 방향키 입력은 무시합니다.
# 0 ≤ keyinput의 길이 ≤ 50
# 1 ≤ board[0] ≤ 99
# 1 ≤ board[1] ≤ 99
# keyinput은 항상 up, down, left, right만 주어집니다.

keyinput = ["down","down"]
board = [9, 1]

# board의 높이/너비 확인
board_width = board[0]//2
board_hight = board[1]//2

# 입력 - 동작값 리스트 만듦
keyinput_dic = {"up":[0,1], "down":[0,-1], "left":[-1,0], "right":[1,0]}
answer = [0,0]

for i in keyinput:
    # board가 넘어가지 않도록 조건 설정
    if board_width >= answer[0]+keyinput_dic[i][0] >= -board_width :
        answer[0] += keyinput_dic[i][0]
    if board_hight >= answer[1]+keyinput_dic[i][1] >= -board_hight :
        answer[1] += keyinput_dic[i][1]

# 제출용 함수
def solution(keyinput, board):
    board_width = board[0]//2
    board_hight = board[1]//2
    keyinput_dic = {"up":[0,1], "down":[0,-1], "left":[-1,0], "right":[1,0]}
    answer = [0,0]

    for i in keyinput:
        if board_width >= answer[0]+keyinput_dic[i][0] >= -board_width :
            answer[0] += keyinput_dic[i][0]
        if board_hight >= answer[1]+keyinput_dic[i][1] >= -board_hight :
            answer[1] += keyinput_dic[i][1]
    return answer

이전에는 for문과 if문으로만 풀었는데 딕셔너리를 이용하니깐 훨씬 깔끔하게 문제를 풀 수 있었다


문제 4 : https://school.programmers.co.kr/learn/courses/30/lessons/120894

# 영어가 싫어요

# 문제 설명
# 영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 
# 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 
# return 하도록 solution 함수를 완성해 주세요.

# 제한사항
# numbers는 소문자로만 구성되어 있습니다.
# numbers는 "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 들이 
# 공백 없이 조합되어 있습니다.
# 1 ≤ numbers의 길이 ≤ 50
# "zero"는 numbers의 맨 앞에 올 수 없습니다.

numbers = "onetwothreefourfivesixseveneightnine"

number_list = ["zero", "one", "two", "three", "four", 
               "five", "six", "seven", "eight", "nine"]
               
# enumerate로 idx, value값을 빼고 replace로 대체
for idx, value in enumerate(number_list):
    numbers = numbers.replace(value,str(idx))
answer = int(numbers)

# 제출용 함수
def solution(numbers):
    number_list = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]
    for idx, value in enumerate(number_list):
        numbers = numbers.replace(value,str(idx))
    answer = int(numbers)
    return answer

 

728x90
반응형
profile

코딩한걸음

@Joonyeol_Yoon

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!