코딩한걸음
728x90
반응형

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


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

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

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

<python />
# 피자 나눠 먹기 (2) # 문제 설명 # 머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다. # 피자를 나눠먹을 사람의 수 n이 매개변수로 주어질 때, # n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 # 최소 몇 판을 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요. # 제한사항 # 1 ≤ n ≤ 100 # 최소공배수 물어보는건가? pizza = [6,3,2,1] n = 4 for i in pizza: if n%i==0: answer = n//i break print(answer) # 제출용 함수 def solution(n): pizza = [6,3,2,1] for i in pizza: if n%i==0: answer = n//i break return answer # 하드코딩 def solution2(n): answer = 0 if n%6==0: answer=n//6 elif n%2==0: answer=n//2 elif n%3==0: answer=n//3 else : answer=n return answer

최소공배수 개념으로 문제를 풀어봤다

pizza의 약수를 정의해주고

for문으로 각각 n이 i로 나누어 떨어질때의 몫을 answer에 넣고 break

하드코딩은 for문대신 if문만으로 풀었을 때이다


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

<python />
# 외계행성의 나이 # 문제 설명 # 우주여행을 하던 머쓱이는 엔진 고장으로 PROGRAMMERS-962 행성에 불시착하게 됐습니다. # 입국심사에서 나이를 말해야 하는데, PROGRAMMERS-962 행성에서는 나이를 # 알파벳으로 말하고 있습니다. a는 0, b는 1, c는 2, ..., j는 9입니다. # 예를 들어 23살은 cd, 51살은 fb로 표현합니다. # 나이 age가 매개변수로 주어질 때 PROGRAMMER-962식 나이를 # return하도록 solution 함수를 완성해주세요. # 제한사항 # age는 자연수입니다. # age ≤ 1,000 # PROGRAMMERS-962 행성은 알파벳 소문자만 사용합니다. age = 23 answer = '' arr = {'0':'a', '1':'b', '2':'c', '3':'d', '4':'e', '5':'f', '6':'g', '7':'h', '8':'i', '9':'j'} age_str = str(age) for i in age_str: answer += arr[i] print(answer) # 제출용 함수 - 딕셔너리 활용하기 def solution(age): answer = '' arr = {'0':'a', '1':'b', '2':'c', '3':'d', '4':'e', '5':'f', '6':'g', '7':'h', '8':'i', '9':'j'} age_str = str(age) for i in age_str: answer += arr[i] return answer # 아스키코드로 풀기 def solution2(age): answer="" for i in str(age): answer += chr(97+int(i)) return answer

딕셔너리와 아스키코드를 활용해서 풀어봤다.

팀원 중에 깔끔하게 푼 코드가 있어서 인상깊었음

 

<python />
def solution(age): answer = '' alphabet = 'abcdefghij' for i in str(age): answer += alphabet[int(i)] return answer

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

<python />
# 편지 # 문제 설명 # 머쓱이는 할머니께 생신 축하 편지를 쓰려고 합니다. # 할머니가 보시기 편하도록 글자 한 자 한 자를 가로 2cm 크기로 적으려고 하며, # 편지를 가로로만 적을 때, 축하 문구 message를 적기 위해 필요한 # 편지지의 최소 가로길이를 return 하도록 solution 함수를 완성해주세요. # 제한사항 # 공백도 하나의 문자로 취급합니다. # 1 ≤ message의 길이 ≤ 50 # 편지지의 여백은 생각하지 않습니다. # message는 영문 알파벳 대소문자, ‘!’, ‘~’ 또는 공백으로만 이루어져 있습니다. message = "I love you~" print(len(message)) # 제출용 함수 def solution(message): answer = len(message) * 2 return answer

" "(스페이스바)도 문자열로 취급된다는게 중요한 포인


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

<python />
# 머쓱이보다 키 큰 사람 # 문제 설명 # 머쓱이는 학교에서 키 순으로 줄을 설 때 몇 번째로 서야 하는지 궁금해졌습니다. # 머쓱이네 반 친구들의 키가 담긴 정수 배열 array와 머쓱이의 키 height가 # 매개변수로 주어질 때, 머쓱이보다 키 큰 사람 수를 # return 하도록 solution 함수를 완성해보세요. # 제한사항 # 1 ≤ array의 길이 ≤ 100 # 1 ≤ height ≤ 200 # 1 ≤ array의 원소 ≤ 200 array = [149, 180, 192, 170] n = 167 answer = 0 answer = sum((1 if n < i else 0) for i in array) print (answer) # 제출용 함수 def solution(array,n): answer = sum((1 if n < i else 0) for i in array) return answer # for문 이용해서 풀어보기 def solution2(array,n): answer=0 for i in array : if n<i : answer=answer+1 return answer

문제가 단순해서 한줄로 끝낼 수 있을까 고민하다가 

처음에는

<python />
answer += ((1 if n < i else 0) for i in array)

이렇게 해봣는데 안됬다.

이유를 생각해보니 for문에서 generator 형식으로 반환을 했다

그래서 혹시나 sum으론 되려나 시도해보니 문제 없었다.

728x90
반응형
profile

코딩한걸음

@Joonyeol_Yoon

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