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
반응형