코딩 테스트 및 코드 검토 코드 검토
코딩 테스트 문제 해결의 목적
- 코딩 테스트 문제 해결 및 알고리즘 이해도 향상
- 팀원들과 함께 코드를 검토하고 코드 작성에 대한 구체적인 이유를 제시합니다.
문제 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인 지점부터 끝까지 해당 코드까지 스킵하고 답에 포함시킨다.