코딩한걸음
728x90
반응형

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


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

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

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

# 양꼬치
# 문제 설명
# 머쓱이네 양꼬치 가게는 10인분을 먹으면 음료수 하나를 서비스로 줍니다. 
# 양꼬치는 1인분에 12,000원, 음료수는 2,000원입니다. 
# 정수 n과 k가 매개변수로 주어졌을 때, 
# 양꼬치 n인분과 음료수 k개를 먹었다면 총얼마를 지불해야 하는지 
# return 하도록 solution 함수를 완성해보세요.

# 제한 사항
# 0 < n < 1000
# n/10 <= k < 1000
# 서비스로 받은 음료수는 모두 마신다

def solution(n,k):
    answer = 12000*n + 2000*(k-n//10)
    return answer

n // 10 을 이용해서 n /10의 몫을 구하는 방법만 안다면 쉬운 문제였다.


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

# 짝수의 합

# 문제 설명
# 정수 n이 주어질 때, n이하의 짝수를 모두 더한 값을
# return 하도록 solution 함수를 작성해주세요.

# 제한사항
# 0 < n <= 1000

def solution(n):
    answer = 0
    for num in range(n+1):
        if num%2 == 0: answer += num 
    return answer

for 문으로 n 이하의 숫자(num)를 하나씩 불러온 후

if 문을 사용해서 num이 짝수인지 판단(num%2는 2로 나누었을때의 나머지)

짝수면 answer에 num을 더하는 코드이다.

 

팀원이 제시한 코드 중에 더 깔끔한 코드가 있었다

def solution(n):
    answer = sum(range(0,n+1,2))
    return answer

sum과 range의 step을 활용한 코드이다.

range로 0부터 n까지의 수를 2 간격으로 나열하고

sum으로 한번에 합친 것이다.


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

# 대문자와 소문자

# 문제설명
# 문자열 my_string이 매개변수로 주어질 때, 
# 대문자는 소문자로 소문자는 대문자로 변환한 문자열을 
# return하도록 solution 함수를 완성해주세요.

# 제한사항
# 1 <= my_string의 길이 <= 1000
# my_sting은 영어 대문자와 소문자로만 구성되어 있습니다.

def solution(my_string):
    answer = ''
    for i in my_string:
        if i == i.upper():answer += i.lower()
        else: answer += i.upper()
    return answer

알파벳을 대문자로 바꿔주는 upper()함수와 소문자로 바꿔주는 lower()을 사용했다

 

팀원중엔 i == i.upper() 대신에 isupper()를 사용한 팀원도 있었다

def solution(my_string):
    answer = ''
    for i in my_string:
        if i.isupper() : answer += i.lower()
        else: answer += i.upper()
    return answer

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

# 암호 해독

# 문제 설명
# 군 전략가 머쓱이는 전쟁 중 적군이 
# 다음과 같은 암호 체계를 사용한다는 것을 알아냈습니다.
# 암호화된 문자열 cipher를 주고받습니다.
# 그 문자열에서 code의 배수 번째 글자만 진짜 암호입니다.
# 문자열 cipher와 정수 code가 매개변수로 주어질 때 해독된 
# 암호 문자열을 return하도록 solution 함수를 완성해주세요.

# 제한사항
# 1 <= cipher의 길이 <= 1000
# 1 <= code <= cipher의 길이
# cipher는 소문자와 공백으로만 구성되어 있습니다
# 공백도 하나의 문자로 취급합니다

def solution(cipher, code):
    answer = ''
    count = 1
    for i in cipher:
        if count%code == 0: answer += i
        count += 1
    return answer

count로 for문이 돌때마다 몇번째 단어인지 같이 셀 수 있도록 코드를 짜봤다.

count가 code의 배수일 때마다 answer에 추가한다

 

팀원중에는 slice기능을 이용해 간단하게 코드를 짠 팀원도 있었다

def solution(cipher, code):
    answer = cipher[code-1::code]
    return answer

 code-1인 이유는 index가 0부터 시작하기 때문이고 가운데가 비어있으면 끝까지 적용이다.

즉 index가 code-1인 지점부터 끝까지 code만큼씩 건너뛰어서 answer에 넣는다

728x90
반응형
profile

코딩한걸음

@Joonyeol_Yoon

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