22.03.23 코딩테스트 문제 풀기

코딩 테스트 및 코드 검토 코드 검토


코딩 테스트 문제 해결의 목적

  • 코딩 테스트 문제 해결 및 알고리즘 이해도 향상
  • 팀원들과 함께 코드를 검토하고 코드 작성에 대한 구체적인 이유를 제시합니다.


문제 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

n보다 작은 수(num)를 하나씩 for 문으로 호출한 후

if 문을 사용하여 num이 짝수인지 확인합니다(num%2는 2로 나눈 나머지입니다).

이 코드는 짝수인 경우 응답에 num을 추가합니다.

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

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

합계와 범위를 단계별로 사용하는 코드입니다.

0부터 n까지의 숫자를 2간격으로 배열

즉시 합계와 결합됩니다.


문제 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

for 문이 개수로 변경될 때마다 단어 수를 세는 코드를 작성했습니다.

숫자가 코드의 배수인 경우 답변에 추가

팀원 중 일부는 슬라이스 기능을 사용하여 간단한 코드를 작성했습니다.

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

이유코드-1은 인덱스가 0부터 시작하여 가운데가 비어있으면 마지막에 적용하기 때문이다.

즉, 인덱스가 Code-1인 지점부터 끝까지 해당 코드까지 스킵하고 답에 포함시킨다.